Compare commits

..
27 Commits
Author SHA1 Message Date
NovaRain 368d632919 Updated version number and changelog 2026-02-25 22:06:06 +08:00
NovaRain 9dabf726e3 Cosmetic edits: renamed some return addr variables in hacks 2026-02-25 21:20:00 +08:00
NovaRain e3c14cda94 Added a safeguard to the death animation fix on combat start 2026-02-23 15:24:39 +08:00
NovaRain 0bb63de958 Updated version number and changelog 2026-02-11 21:40:51 +08:00
NovaRain 70a8eb086f Removed unnecessary/unused return value in critter_mod_skill function 2026-02-11 20:16:09 +08:00
NovaRain 47dad66b58 Removed misleading parens from functions without args in documents 2026-01-27 16:37:49 +08:00
NovaRain 8ec4ed6a0a Code edits to SingleCore to make it run safer
Changed SingleCore to be disabled by default.
(its usage is questionable on newer systems.)
2026-01-16 10:10:28 +08:00
NovaRain 201ecd16f7 Code edits to ProcessorIdle
* include QS_RAWINPUT (0x400) for WinXP+.
* set the option enabled by default.
2026-01-15 09:41:13 +08:00
NovaRain ae3a8f85f5 Added settings about the mirrored shades to tweaks.ini
Updated the description of Fallout1Behavior.
2026-01-13 14:30:08 +08:00
NovaRain b6d8b14f90 Expanded the functionality of Fallout1Behavior
* FO1 initial in-game time is 7:21 rather than 8:24.
2026-01-10 20:36:11 +08:00
NovaRain edd6da5716 Fixed edge-scrolling speed in the world map
* commit 5feeff0 only fixed when in normal game maps.
2026-01-04 12:37:51 +08:00
NovaRain fe9d56030f Re-ordered Unarmed module init (sync with 4.x) 2026-01-03 20:45:25 +08:00
NovaRain 5feeff0c21 Fixed edge-scrolling speed when using the speed tweak
(closes #523)
2026-01-01 20:23:34 +08:00
NovaRain ea79147afe Cosmetic edits: updated year 2026-01-01 20:17:18 +08:00
NovaRain 6535a5f02e Added a safeguard to the single-frame death anims tweak
Updated version number.
2025-12-05 16:48:31 +08:00
NovaRain 265314083d Tweaked interface bar FRM
* to better sync with HRP's 800px one.

Updated resource files.
2025-11-12 22:50:25 +08:00
NovaRain 0367d28bc1 Edited the description of some legacy options to make them explicitly clear 2025-10-23 08:56:39 +08:00
NovaRain 06df287b3a Updated version number and changelog
Edits to sfall opcode list.
2025-10-09 19:26:53 +08:00
NovaRain f57a261339 Updated Russian translation file 2025-09-17 20:51:42 +08:00
NovaRain ee5cdbcd81 Added support for switching the keyboard layout
(from Crafty)

Minor edits to some documents and LoadOrder.cpp.
2025-09-17 20:49:10 +08:00
NovaRain 93416a9450 Fixed the upper limit when applying mouse sensitivity 2025-09-11 22:13:47 +08:00
NovaRain 9a18193060 Added an option to disable Arroyo-related events
Minor fix to DisableSpecialMapIDs (as ID 0 is still a valid map).
Edited some descriptions in ddraw.ini.
2025-08-29 13:23:57 +08:00
NovaRain 95cd72348d Added splash screen fallback to Mash's HRP (4.1.8 only) 2025-08-28 09:08:11 +08:00
NovaRain 0b6a058dff Code fixes/edits to the previous commit
* nonEngLang didn't get set when using Mash's HRP.
2025-08-27 10:33:25 +08:00
NovaRain 6f5ebe76fc Added default path fallback for splash screens
* before the game loaded splash screens only from art\<language>\splash\
if the game language is not English, ignoring the default art\splash\.

Added a global boolean to replace individual game language checks.
2025-08-25 12:16:34 +08:00
NovaRain 4cef7cf72f Fixed file seeking in uncompressed .dat files
(ref. fallout2-ce/fallout2-ce#244)
2025-08-24 09:45:33 +08:00
NovaRain 400f94e302 Fixed crash in an encounter between two groups
* when they are set to fight each other but one group fails to spawn.
(ref. BGforgeNet/Fallout2_Restoration_Project#350)

Updated version number.
2025-08-17 15:11:05 +08:00
225 changed files with 1289 additions and 898 deletions
+30 -8
View File
@@ -1,12 +1,34 @@
# Changelog
## 3.8.49.1
* Fixed a crash bug introduced in 3.8.46 when the player is hit and combat starts at the same time
## 3.8.49
* Fixed the edge-scrolling speed when using the game speed tweak
* Fixed incorrect unarmed damage being displayed in the inventory under specific conditions
* Fixed a crash bug in the tweak that replaces death animations on critters with single-frame variants on map load
* Improved the functionality of **Fallout1Behavior** to set the correct initial in-game time
* Changed **ProcessorIdle** to be enabled by default
* Changed **SingleCore** to be disabled by default as its usage is questionable on newer systems
* Added a fix for script execution issues when calling `critter_mod_skill` in a loop
* Added options to the **tweaks ini file** to override the PID of the mirrored shades and the stat they affect when equipped
## 3.8.48
* Fixed incorrect mnemonic names in script dumps generated by the script decompiler (`int2ssl.exe` in the **modders pack**)
* Added a fix for a crash when an encounter between two groups fighting each other fails to spawn one group
* Added a fix to use the `art\splash\` directory as the fallback for loading splash screens for non-English languages
* Added a fix for the game not applying the mouse sensitivity setting correctly in certain cases
* Added a fix for file seeking in uncompressed **.dat** files
* Added an option to disable the engine's processing of Arroyo-related events
* Added support for switching to alternate keyboard character codes (from Crafty)
## 3.8.47
* Fixed potential undefined behavior in **FullItemDescInBarter**
* Fixed the behavior of `break` statement in script compiler and decompiler (`compile.exe` and `int2ssl.exe` in the **modders pack**)
* Improved the fix for removing floating text messages on the map when moving to another map or elevation
* Improved the error handling for missing main **.dat** files
* Removed glass glare from the **'Use Inventory Item On'** window to match other game interfaces
* Added a fix for a crash when a critter with a powered melee/unarmed weapon ran out of ammo and there was ammo nearby
* Added a fix for a crash when a critter with a powered melee/unarmed weapon runs out of ammo and there was ammo nearby
* Added a fix to prevent a potential crash when using skills on non-critter objects
* Added a fix for the duplicate click sound for the 'Done' button in the **'Move Items'** and **'Set Timer'** windows
* Added a few fixes for slightly misaligned buttons in the pipboy, character screen, and barter screen
@@ -32,7 +54,7 @@
* Added a fix for the duplicate click sound when selecting a location in the Status section of the pipboy
* Added a fix for extra hidden buttons below the location list in the Status section of the pipboy
* Added a fix for map lighting from **Night Vision** perk not updating when loading a saved game
* Added a fix for an animation glitch when death animations and combat start simultaneously
* Added a fix for an animation glitch when death animations and combat start at the same time
* Added a fix to prevent the game from hanging when reloading a weapon overloaded with ammo via the interface bar
* Added a few fixes for issues related to weapons with negative ammo
* Added a tweak to replace death animations on critters with single-frame variants on map load
@@ -253,7 +275,7 @@
## 3.8.31
* Fixed the Jet addiction not being removed when using the antidote in some cases
* Fixed the key repeat delay and rate when enabling the game speed tweak
* Fixed the key repeat delay and rate when using the game speed tweak
* Fixed a possible crash at the end of the playback of alternative sound files
* Fixed a rounding error in Glovz's damage formula
* Improved the behavior of **SpeedInterfaceCounterAnims=3**
@@ -294,14 +316,14 @@
## 3.8.30.1
* Merged Windows 2000 support into the standard version of sfall. Using **DX9** graphics modes now requires `d3dx9_42.dll` and `d3dcompiler_42.dll`
* Fixed a crash bug introduced in 3.8.30 with the fix for animation registration
* Fixed a crash bug introduced in 3.8.30 by the fix for animation registration
* Fixed a bug in **AIDrugUsePerfFix** that could cause a hang in combat
* Fixed the extra check for friendly fire not working if the `area_attack_mode` parameter in the AI packet is not set or set to `no_pref`
* Added a fix for `chem_primary_desire` values in party member AI packets not being saved and reset correctly
## 3.8.30
* Fixed the original engine issues with being unable to register animations in certain situations in the game
* Fixed a crash bug introduced in 3.8.29 with the fix for the **'Leave'** event procedure in `AddRegionProc` function
* Fixed a crash bug introduced in 3.8.29 by the fix for the **'Leave'** event procedure in `AddRegionProc` function
* Fixed a bug in **ObjCanSeeObj_ShootThru_Fix** that could cause a hang in some cases
* Fixed the check of the ammo cost for a shot in **CheckWeaponAmmoCost**
* Fixed `set_critter_burst_disable` script function, which now applies only to weapons with the burst attack as the secondary mode
@@ -331,7 +353,7 @@
* Added a tweak to prevent NPC aggression when non-hostile NPCs accidentally hit the player or members of the player's team
* Added a tweak to play the **'magic hands'** animation when using an item on an object. This also prevents a few issues with scripted animations not playing
* Added a tweak to remove the unspent skill points limit
* Added an option to disable the special handling of city areas 45 and 46 in the engine when visiting Area 45
* Added an option to disable the engine's special handling of city areas 45 and 46 when visiting Area 45
* Added an option to load alternative dialog msg and subtitle files for female PC (translation friendly)
* Added an option to allow using the caret character `^` in dialog msg files to specify alternative text in dialogue based on the player's gender
* Added a new value to **AIDrugUsePerfFix** to allow NPCs to use only the drugs listed in `chem_primary_desire` and healing drugs
@@ -541,7 +563,7 @@
* New script functions: `add_g_timer_event`, `remove_timer_event`, `reg_anim_callback`, `get_sfall_arg_at`, `hide/show_window`, `set_window_flag`, `get_text_width`, `string_compare`, `string_format`, `objects_in_radius`, `tile_by_position`
## 3.8.21.1
* Fixed a crash bug introduced in 3.8.21 with the fix for corpses blocking line of fire
* Fixed a crash bug introduced in 3.8.21 by the fix for corpses blocking line of fire
## 3.8.21
* Fixed a bug in `save_array` script function that could corrupt `sfallgv.sav` when saving a new array under the same key
@@ -672,7 +694,7 @@
* Added a fix to prevent the reserved object IDs of the player and party members from being generated for other objects
* Added a fix for the display issue in the pipboy when the automap list is too long
* Added a fix for the `start` procedure not being called correctly if the required standard script procedure is missing (from Crafty)
* Added an option to disable the special handling of map IDs 19 and 37 in the engine when entering the maps
* Added an option to disable the engine's special handling of map IDs 19 and 37 when entering those maps
* Added support for the new **'automap=yes/no'** parameter to `maps.txt`. This parameter overrides the hardcoded values for displaying the map in the pipboy automaps for the first 160 maps
* Added files for using 32-bit images for talking heads to the **modders pack**
* Improved the functionality of the debug editor (in the **modders pack**)
+9
View File
@@ -1,4 +1,13 @@
[sfall]
;Table for overriding ASCII codes for keyboard character input when entering the player's name and saved game descriptions
;Only character codes in the ASCII range 33-126 can be overridden
;Character codes that do not need to be overridden can be omitted by using commas as delimiters
;You must also set a key for switching layouts using the XltKey option in ddraw.ini
;Default character code table for the English layout (letter codes only)
;XltTable=,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,,,,,,,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,,,,
;##############################################################################
SaveInCombat=Cannot save at this time.
KarmaGain=You gained %d karma.
KarmaLoss=You lost %d karma.
+7 -1
View File
@@ -2,7 +2,6 @@
[Main]
[Items]
;Override the PIDs of the standard healing drugs that AI will use in combat
;Set to -1 if you don't want AI to identify this item as a healing drug
@@ -11,3 +10,10 @@
STIMPAK=40
SUPER_STIMPAK=144
HEALING_POWDER=273
;Overrides the PID of the item that grants a +1 stat bonus when placed in an active item slot
;Default is 433. Set to -1 to prevent any item from granting the bonus
MIRROR_SHADES_PID=433
;The SPECIAL stat number (0..6) to which the bonus is applied
;Default is 3 (Charisma). Set to -1 to disable the item's effect
MIRROR_SHADES_STAT=3
+4 -2
View File
@@ -1,9 +1,11 @@
sfall's main configuration options appear in ddraw.ini, but there are several other configuration files that it can read in for modding purposes.
Books.ini: Lets you override/add books to the game (associated object PIDs, skills and text messages)
Books.ini: Lets you override/add books to the game (associated object PIDs, skills, and text messages)
Perks.ini: Lets you override the name/description/frm image/other stats of perks and traits
Elevators.ini: Lets you override which elevators lead where
Elevators.ini: Lets you override which elevators lead to where
CriticalOverrides.ini: Lets you make modifications to the critical hit tables
Translations.ini: Contains some text strings which sfall displays, to allow their translation
Skills.ini: Lets you change the formula used for calculating skills
Stats.ini: Lets you change the formula used to calculate the derived stats
Tweaks.ini: Lets you override a few object PIDs used in the engine
Unarmed.ini: Lets you configure the requirements and effects of unarmed attacks
+29 -14
View File
@@ -1,9 +1,9 @@
;sfall configuration settings
;v3.8.47
;v3.8.49.1
[Main]
;Set to 1 if you want to use command line arguments to tell sfall to use another ini file
;This option is always enabled in 4.3.3/3.8.33 or later. The information is left for reference only
;This option is always enabled in 4.3.3/3.8.33 or later and cannot be disabled (kept for reference only)
UseCommandLine=0
;Uncomment and point to a file to get alternate translations for some sfall messages
@@ -138,7 +138,7 @@ AllowSoundForFloats=0
;This does not effect the play_sfall_sound and stop_sfall_sound script functions
AllowDShowSound=0
;Set to 1 to override the default music path with data\sound\music\ if music_path is not present in the cfg
;Set to 1 to override the default music path with data\sound\music\ if music_path is not present in fallout2.cfg
;Set to 2 to overwrite all occurrences of the music path
OverrideMusicDir=1
@@ -210,7 +210,7 @@ SpeedKey9=0x00
;A key to hold down to move the window around when using DX9 graphics mode 5
;Set to 0 if you don't want to use a modifier key, or a DX scancode otherwise
;Set to -1 for either ctrl key, -2 for either alt key or -3 for either shift key
;Set to -1 for either Ctrl key, -2 for either Alt key, or -3 for either Shift key
WindowScrollKey=0
;A key to press to toggle the highlighting of all items on the ground on the current map
@@ -263,12 +263,17 @@ ItemMoveSkipDragKey=29
;Requires sfall debugging mode and FalloutDebug.exe from the modders pack
DebugEditorKey=0
;A key to press to switch the keyboard layout (uses character codes from the XltTable option in Translations.ini)
;Set to 1 for Num Lock, 2 for Caps Lock, 3 for Scroll Lock, or 0 to disable
XltKey=0
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Misc]
;Changes some of Fallout 2 engine functions to Fallout 1 behavior:
;- disables playing the final movie/credits after the endgame slideshow
;- disables halving the weight for power armor items
;- endgame_movie script function plays movie 10 or 11 based on the player's gender before the credits
;- the final movie/credits are not played after the endgame slideshow
;- the weight of power armor items is not halved
;- the endgame_movie script function plays movie 10 or 11 based on the player's gender before the credits
;- the initial in-game time is set to 7:21
Fallout1Behavior=0
;Time limit in years. Must be between -3 and 13
@@ -319,7 +324,7 @@ UseFileSystemOverride=0
;Set to 1 to change the order of how the engine loads game data
;Old: patchXXX.dat > critter_patches > critter_dat > f2_res_patches > f2_res_dat > master_patches > master_dat
;New: master_patches > critter_patches > [ExtraPatches] > patchXXX.dat > sfall.dat > critter_dat > f2_res_patches > f2_res_dat > master_dat
;This option is always enabled in 4.3/3.8.30 or later. The information is left for reference only
;This option is always enabled in 4.3/3.8.30 or later and cannot be disabled (kept for reference only)
DataLoadOrderPatch=1
;Set to 1 to load alternative dialog msg files from text\<language>\dialog_female\ for female PC
@@ -410,7 +415,7 @@ ViewXPos=-1
ViewYPos=-1
;Set to 1 to force Fallout not to use multiple processor cores even if they are available
SingleCore=1
SingleCore=0
;Set to 1 to override the art_cache_size setting in fallout2.cfg
OverrideArtCacheSize=0
@@ -427,7 +432,7 @@ SaveInCombatFix=1
;Set to 1 to enable additional weapon animation codes from 'o' to 't'
;The 4 byte value at 0x39 of weapon protos may range from 0 to 15 rather than 0 to 10
;Since the letters 'n' and 'r' are in use for other animations, an animation code of 11 corresponds to 's' and 15 to 't'
;This option is always enabled in 4.4.1/3.8.41 or later. The information is left for reference only
;This option is always enabled in 4.4.1/3.8.41 or later and cannot be disabled (kept for reference only)
AdditionalWeaponAnims=1
;Uncomment these lines to modify the default modifiers for aimed shots at specific bodyparts
@@ -465,7 +470,7 @@ PlayIdleAnimOnReload=0
CorpseDeleteTime=6
;Set to 1 to allow the game to go idle during each input loop, preventing 100% CPU usage
ProcessorIdle=0
ProcessorIdle=1
;Set to 1 if using the hero appearance mod
;Set to 2 for backward compatibility with scripts that manually fix obj_art_fid/art_change_fid_num script functions for dude_obj
@@ -487,7 +492,7 @@ NPCsTryToSpendExtraAP=0
AllowLargeTiles=0
;Set to 1 to boost the maximum number of tile FRMs from 4096 to 16383
;This option is always enabled in 4.3.7/3.8.37 or later. The information is left for reference only
;This option is always enabled in 4.3.7/3.8.37 or later and cannot be disabled (kept for reference only)
MoreTiles=1
;Change the Skilldex cursor FRM numbers
@@ -797,15 +802,25 @@ PartyMemberSkillFix=0
;Set to -1 to disable the special death message when the global variable is set
SpecialDeathGVAR=491
;Set to 1 to disable the special handling of map IDs 19 and 37 in the engine when entering the maps
;Set to 1 to disable the engine's special handling of map IDs 19 and 37 when entering those maps
;Note that enabling this option will break the map changes in Modoc and Vault 15 in Fallout 2
DisableSpecialMapIDs=0
;Set to 1 to disable the special handling of city areas 45 and 46 in the engine when visiting Area 45:
;Set to 1 to disable the engine's special handling of city areas 45 and 46 when visiting Area 45:
;Area 45 automatically disappears from the world map, and Area 46 appears on the world map
;Note that enabling this option will break the location change of the 'Fake Vault 13' in Fallout 2
DisableSpecialAreas=0
;Set to 1 to disable the engine's processing of events related to Arroyo (areas 0 and 22)
;This also disables the playback of Hakunin dream sequences and the processing of global variables:
;GVAR_ENEMY_ARROYO (7), GVAR_TOWN_REP_ARROYO (47), GVAR_FALLOUT_2 (494)
DisableArroyoEvents=0
;Set to 1 to fix the issue with the division operator treating negative integers as unsigned
;Note: To perform the unsigned integer division, use the new 'div' operator
;This option is always enabled in 4.3.5/3.8.35 or later and cannot be disabled (kept for reference only)
DivisionOperatorFix=1
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; Configuration ini files
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+6 -6
View File
@@ -107,7 +107,7 @@ Data types mentioned in this document:
FUNCTION REFERENCE
------------------
#### `int game_loaded()`
#### `int game_loaded`
- Returns 1 the first time it is called after a new game or game load, and 0 any time after. It works on an individual basis for each script, so one script wont interfere with others. Its primary use is for global scripts, so that they know when to call `set_global_script_repeat`, but it can be called from normal scripts too.
-----
@@ -145,16 +145,16 @@ FUNCTION REFERENCE
- If the setting argument is in an invalid format, it returns -1 (integer).
-----
#### `int get_game_mode()`
#### `int get_game_mode`
- Is a more flexible version of `in_world_map`. It will return a set of flags indicating which mode the game is currently in.
- These flags are the same as those used in the `set_shader_mode` function.
-----
#### `int get_uptime()`
#### `int get_uptime`
- Is just a wrapper around the windows `GetTickCount()` function. It's useful for making time fade effects in shaders, since they already have access to the current tick count.
-----
#### `bool in_world_map()`
#### `bool in_world_map`
- Returns 1 if the player is looking at the world map, or 0 at any other time.
- Obviously this is only useful in global scripts, since normal scripts will never get the chance to run on the world map.
@@ -171,7 +171,7 @@ FUNCTION REFERENCE
- In this case use `force_encounter_with_flags` with the `ENCOUNTER_FLAG_NO_CAR` flag set.
-----
#### `int get_light_level()`
#### `int get_light_level`
- Ambient light level in range 0..65536
- The value returned by `get_light_level` may not exactly match that set by `set_light_level`, as `set_light_level` applies modifiers from the night vision perk.
@@ -433,7 +433,7 @@ FUNCTION REFERENCE
- If a file has a specific number assigned in **ExtraGameMsgFileList**, its fileId will be (`0x2000` + assigned number). (e.g. with `ExtraGameMsgFileList=foo,bar:2,foobar` in **ddraw.ini**, bar.msg will be associated with 0x2002 and foobar.msg with 0x2003.)
-----
#### `int sneak_success()`
#### `int sneak_success`
- Returns 1 if the player is currently sneaking, and last sneak attempt (roll against skill) was successful; 0 otherwise.
- This calls an internal engine function which is used to determine the perception range of critters (which you can override using `HOOK_WITHINPERCEPTION`).
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+9
View File
@@ -1,4 +1,13 @@
[sfall]
;Таблица переопределения ASCII кодов ввода символов клавиатуры, это используется при вводе имени игрока и описания сохраненных игр
;Допускается переопределять коды символов в диапазоне ASCII таблицы с 33 по 126
;Коды символов которые не требуется переопределять можно не вводить, пропустив их код разделителем
;Также вы должны назначить код для клавиши переключения раскладки кодов опция XltKey в ddraw.ini
;Переопределение символов для кодовой страницы Win1251 (шрифт игры версии 1C)
XltTable=,221,,,,,253,,,,,225,,254,,,,,,,,,,,,198,230,193,,222,,,212,200,209,194,211,192,207,208,216,206,203,196,220,210,217,199,201,202,219,197,195,204,214,215,205,223,245,,250,,,,244,232,241,226,243,224,239,240,248,238,235,228,252,242,249,231,233,234,251,229,227,236,246,247,237,255,213,,218
;##############################################################################
SaveInCombat=Сохранение в данный момент невозможно.
KarmaGain=Вы получаете %d единиц кармы.
KarmaLoss=Вы теряете %d единиц кармы.
+1 -1
View File
@@ -1,6 +1,6 @@
/*
* sfall
* Copyright (C) 2008-2025 The sfall team
* Copyright (C) 2008-2026 The sfall team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
+1 -1
View File
@@ -1,6 +1,6 @@
/*
* sfall
* Copyright (C) 2008-2025 The sfall team
* Copyright (C) 2008-2026 The sfall team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by

Some files were not shown because too many files have changed in this diff Show More