mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e706fba989 | ||
|
|
884c00ffeb | ||
|
|
78ef06c8e6 | ||
|
|
d75d46d281 | ||
|
|
fc1d9dbfc2 | ||
|
|
b50dcaa151 | ||
|
|
53f427fcac | ||
|
|
818c2eb6b2 | ||
|
|
ad2b9ab0fb | ||
|
|
46349c5d69 | ||
|
|
8a8455efea | ||
|
|
6e7ba2f5b9 | ||
|
|
da08bdbf83 | ||
|
|
dc97dad94c | ||
|
|
82cf074845 | ||
|
|
8e95b2d8f6 | ||
|
|
81638168c2 | ||
|
|
56459ee5f0 | ||
|
|
35276dfe59 | ||
|
|
0400671f38 | ||
|
|
30cb8b7ee9 | ||
|
|
273c44e788 | ||
|
|
4ef8986bda | ||
|
|
dbf5e36b86 | ||
|
|
386d373376 | ||
|
|
360037a2fd | ||
|
|
a3c8f0f609 | ||
|
|
7dda156ee7 | ||
|
|
31a5dbc61c | ||
|
|
c476e54db0 | ||
|
|
95dc75da38 | ||
|
|
e276c59447 | ||
|
|
1c3e2f2eb1 | ||
|
|
3dcc26a739 | ||
|
|
8ef6a66134 | ||
|
|
0bba6ccb54 | ||
|
|
8f846eda6e | ||
|
|
572cbd059f | ||
|
|
f02ba1993b | ||
|
|
f800b7bb33 | ||
|
|
de3d6256e3 | ||
|
|
ae0f3d6fdc | ||
|
|
f46ffb4ea5 | ||
|
|
c7ecf1c070 | ||
|
|
8c277730bf | ||
|
|
898e7bb4e0 | ||
|
|
3e955572be | ||
|
|
7fc5dc47b4 | ||
|
|
71e3ee4801 | ||
|
|
59eacce6be | ||
|
|
ff53d2515d | ||
|
|
8fd5182bb5 | ||
|
|
2677d9faa7 | ||
|
|
9fe3ed5d98 | ||
|
|
e6610c4bbe | ||
|
|
31630f6627 | ||
|
|
489f62f5cb | ||
|
|
1f802cab6f | ||
|
|
788593cdcc | ||
|
|
680310f702 | ||
|
|
4f36136a39 | ||
|
|
48355fa637 | ||
|
|
6af62af27d | ||
|
|
bd76a3ded7 | ||
|
|
3a08488895 | ||
|
|
2941157174 | ||
|
|
2148650313 | ||
|
|
6dee4e1183 | ||
|
|
b2e60ba62e | ||
|
|
a71c2c901a | ||
|
|
4f3c1a60b4 | ||
|
|
9674c16928 | ||
|
|
0c035a05df | ||
|
|
51cd2eab69 | ||
|
|
323631835b | ||
|
|
135c26ab70 | ||
|
|
34092900a6 | ||
|
|
c8fe92ef7d | ||
|
|
b578aecc59 | ||
|
|
b57a87f98f | ||
|
|
2156f82184 | ||
|
|
be6947e3d2 | ||
|
|
f0784e2987 | ||
|
|
1a6a9e5ec1 | ||
|
|
0be6011c19 | ||
|
|
6f45d45fcd | ||
|
|
f413bb8b9a | ||
|
|
e3907c3647 | ||
|
|
007386caec | ||
|
|
c593269ee7 | ||
|
|
1976461b72 | ||
|
|
9fa123d15f | ||
|
|
3b6435d8a4 | ||
|
|
7322634780 | ||
|
|
7f0398c618 | ||
|
|
4e3f065453 | ||
|
|
378bc8a126 | ||
|
|
e92c994744 | ||
|
|
a1d0e59287 | ||
|
|
40f2050f8c | ||
|
|
c33c200b51 | ||
|
|
26693fd0ed | ||
|
|
033c8bf8ef | ||
|
|
ddf2854938 | ||
|
|
637de0e07d | ||
|
|
ff1c87f0c5 | ||
|
|
66c0ed8cb2 | ||
|
|
f3bbfbfa28 | ||
|
|
41a1fead58 | ||
|
|
a0cf633899 | ||
|
|
a09611edc6 | ||
|
|
291370a96c | ||
|
|
576bea2aa9 | ||
|
|
765b19e045 | ||
|
|
f4fe4211e1 | ||
|
|
0c3d6004a7 | ||
|
|
f6675cf241 | ||
|
|
736c2cb6fe | ||
|
|
13445a1b83 | ||
|
|
4417947c56 | ||
|
|
6903d59e6d | ||
|
|
5e3e37f74c | ||
|
|
e090fd833b | ||
|
|
1ab8407407 | ||
|
|
a4558993e0 | ||
|
|
f1131b87c6 | ||
|
|
465bc649be | ||
|
|
9db5f45545 | ||
|
|
fb4770edc4 | ||
|
|
921f14f43f | ||
|
|
d013d59afd | ||
|
|
2828e08f68 | ||
|
|
0b08035b97 | ||
|
|
62b0955807 | ||
|
|
67b46cd4a6 | ||
|
|
bb13e3f219 | ||
|
|
7ecdfe362f | ||
|
|
4f34217625 | ||
|
|
f4666dad18 | ||
|
|
536e3b2741 | ||
|
|
f4c72a4e6e | ||
|
|
db40eae68f | ||
|
|
f1626e846a | ||
|
|
5429217c0a | ||
|
|
59aee239fe | ||
|
|
d429af8011 | ||
|
|
ba186590bc | ||
|
|
f94cadf767 | ||
|
|
aea263eddd | ||
|
|
b7fc0fb1d7 | ||
|
|
b8c3f89279 | ||
|
|
82eb78e185 | ||
|
|
d8fafa85a9 | ||
|
|
a121d09704 | ||
|
|
b0fa170ffd | ||
|
|
c9712f75ee | ||
|
|
7f426608d2 | ||
|
|
81af621b3c | ||
|
|
0ed00a0a41 | ||
|
|
89eff96b69 | ||
|
|
e24e616d5c | ||
|
|
08d2ffe26d | ||
|
|
225fa9cc57 | ||
|
|
511d594e7d | ||
|
|
0e0d884a97 | ||
|
|
2950140e3a | ||
|
|
e70005dbd5 | ||
|
|
5ac91aec79 | ||
|
|
2578963f7d | ||
|
|
ce82348a15 | ||
|
|
74f3036b57 | ||
|
|
7666b4e08f |
@@ -26,6 +26,7 @@
|
|||||||
*.exe
|
*.exe
|
||||||
*.out
|
*.out
|
||||||
*.app
|
*.app
|
||||||
|
!ducible.exe
|
||||||
|
|
||||||
# NetBeans
|
# NetBeans
|
||||||
nbproject/private/
|
nbproject/private/
|
||||||
|
|||||||
+908
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,8 @@
|
|||||||
# sfall
|
# sfall
|
||||||
|
|
||||||
[](https://www.gnu.org/licenses/gpl-3.0)
|
[](https://www.gnu.org/licenses/gpl-3.0)
|
||||||
|
[](https://github.com/phobos2077/sfall/actions/workflows/build.yml)
|
||||||
|
[](https://github.com/phobos2077/sfall/actions/workflows/gh-pages.yml)
|
||||||
|
|
||||||
A set of engine modifications for the classic game Fallout 2 in the form of a DLL, which modifies executable in memory without changing anything in EXE file itself.
|
A set of engine modifications for the classic game Fallout 2 in the form of a DLL, which modifies executable in memory without changing anything in EXE file itself.
|
||||||
|
|
||||||
@@ -11,12 +13,52 @@ A set of engine modifications for the classic game Fallout 2 in the form of a DL
|
|||||||
- Many additional features for users, such as item highlight button, party member control, etc.
|
- Many additional features for users, such as item highlight button, party member control, etc.
|
||||||
- Extended scripting capabilities for modders (many new opcodes to control sfall features as well as previously unavailable vanilla engine functions)
|
- Extended scripting capabilities for modders (many new opcodes to control sfall features as well as previously unavailable vanilla engine functions)
|
||||||
|
|
||||||
|
|
||||||
Original author: **Timeslip**
|
Original author: **Timeslip**
|
||||||
|
|
||||||
Original description: A set of engine modifications for the classic game Fallout 2 by Interplay. Includes fixes for bugs in the original engine, allows fallout to run correctly on modern operating systems, and adds additional features for modders.
|
Original description: A set of engine modifications for the classic game Fallout 2 by Interplay. Includes fixes for bugs in the original engine, allows Fallout to run correctly on modern operating systems, and adds additional features for modders.
|
||||||
|
|
||||||
---
|
## Installation
|
||||||
#### Fallout Engine IDA Database
|
|
||||||
[Download for IDA Pro 6.8](https://www.dropbox.com/s/tm0nyx0lnk4yui0/Fallout_1_and_2_IDA68.rar?dl=1 "Download from Dropbox")
|
- Download `sfall_*.7z` from the [release archive](https://sourceforge.net/projects/sfall/files/).
|
||||||
| [Download for IDA Pro 7.0](https://www.dropbox.com/s/61srq09pn8grfpu/Fallout_1_and_2_IDA70.rar?dl=1 "Download from Dropbox") (comments are in Russian)
|
|
||||||
|
- Extract `ddraw.dll`, `ddraw.ini`, and `sfall.dat` to Fallout's base directory (i.e. the one that contains `fallout2.exe`).
|
||||||
|
|
||||||
|
- __Important Note:__\
|
||||||
|
If you are using a mod that already included sfall (e.g. killap's [Unofficial Patch](https://github.com/BGforgeNet/Fallout2_Unofficial_Patch) or [Restoration Project](https://github.com/BGforgeNet/Fallout2_Restoration_Project)), then that mod has probably included a custom modified `ddraw.ini`. In that case, overwriting it with sfall's vanilla `ddraw.ini` will be likely break your game. Instead, only overwrite `ddraw.dll`, and keep the mod's existing copy of `ddraw.ini`. (Or, if you know what you're doing, you can merge them together by hand.)
|
||||||
|
|
||||||
|
- The folder `translations` contains translations of some of the strings that sfall displays in the game. To use a translation, copy this folder to Fallout's base directory too, and then in `ddraw.ini` change the __TranslationsINI__ setting to `.\translations\<your language>.ini`.
|
||||||
|
|
||||||
|
## Uninstallation
|
||||||
|
|
||||||
|
Delete `ddraw.dll`, `ddraw.ini`, and `sfall.dat` from your Fallout directory.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
This mod is configured via the `ddraw.ini` file, which can be opened with any text editor. Details of every configerable option are included in that file. Where a comment refers to a DX scancode, the complete list of codes can be found at the link below:\
|
||||||
|
https://kippykip.com/b3ddocs/commands/scancodes.htm
|
||||||
|
|
||||||
|
In a default installation using an unmodified copy of `ddraw.ini`, the middle mouse button will be set to switch between weapons and the mouse wheel will be set to scroll through any menus that respond to the up/down arrow keys. Holding Ctrl and hitting numpad keys 0 to 6 (with Num Lock off) will adjust the game speed. Holding left Ctrl will let you move a whole stack of items at once. Pressing left Shift will highlight items on the ground. The script extender and any engine fixes are also enabled. Most of the options that change gameplay in some way not originally intended by the developers are disabled.
|
||||||
|
|
||||||
|
For [__Wine__](https://www.winehq.org/) users:\
|
||||||
|
You need to set DLL overrides for `ddraw.dll` to __"native, builtin"__ in `winecfg` or use `WINEDLLOVERRIDES="ddraw=n,b"` to run Fallout from the command line. If you want to play alternative sound files, you'll also need to install GStreamer Good 32-bit plugins.
|
||||||
|
|
||||||
|
## Build Instructions
|
||||||
|
|
||||||
|
### Prerequisites:
|
||||||
|
|
||||||
|
* Visual C++ 2010 Express SP1 or Visual Studio 2010 SP1.
|
||||||
|
* [DirectX SDK (February 2010)](https://archive.org/details/dxsdk_feb10). You will also need `dinput.lib` from DXSDK August 2007. The file can be found in the [DirectX SDK Collection repo](https://github.com/NovaRain/DXSDK_Collection).
|
||||||
|
* [DirectX Runtime (June 2010)](https://www.microsoft.com/en-us/download/details.aspx?id=8109).
|
||||||
|
|
||||||
|
### Steps:
|
||||||
|
|
||||||
|
1. Set up a `postbuild.cmd` using the template from the repo.
|
||||||
|
2. Open the solution file and build with the **Release** configuration.
|
||||||
|
3. If everything is set up correctly, you should have a new sfall `ddraw.dll` in your Fallout 2 directory.
|
||||||
|
|
||||||
|
## Additional info
|
||||||
|
|
||||||
|
* [Changelog](CHANGELOG.md)
|
||||||
|
* [Scripting Documentation](https://sfall-team.github.io/sfall/)
|
||||||
|
* Fallout Engine IDA Database: [for IDA Pro 6.8](https://www.dropbox.com/s/tm0nyx0lnk4yui0/Fallout_1_and_2_IDA68.rar?dl=1 "Download from Dropbox") | [for IDA Pro 7.0](https://www.dropbox.com/s/61srq09pn8grfpu/Fallout_1_and_2_IDA70.rar?dl=1 "Download from Dropbox") (comments are in Russian)
|
||||||
|
* [Fallout 2 Reference Edition](https://github.com/alexbatalov/fallout2-re)
|
||||||
|
|||||||
@@ -1,16 +1,45 @@
|
|||||||
;This file handles modifications to perks and traits
|
;This file handles modifications to perks and traits
|
||||||
|
|
||||||
;When adding extra perks to a mod, it's advisable to use the fake perk scripting functions rather than make modifications
|
;When adding extra perks to a mod, it's advisable to use the fake perk scripting functions rather than make
|
||||||
; in this file, as some perks have hardcoded effects which may catch you out
|
; modifications in this file, as some perks have hardcoded effects which may catch you out
|
||||||
|
|
||||||
;Since traits need to be picked before any scripts run, they have an additional NoHardcode option in this file which can
|
;Since traits need to be picked before any scripts run, they have an additional NoHardcode option in this file which can
|
||||||
; be used to remove their hardcoded effects, and add new stat/skill effects
|
; be used to remove their hardcoded effects, and add new stat/skill effects
|
||||||
|
|
||||||
[PerksTweak]
|
[PerksTweak]
|
||||||
|
;Changes the Outdoorsman skill bonus for 'Survivalist' perk (ID 16)
|
||||||
|
;125 - maximum bonus, 25 - default bonus
|
||||||
|
SurvivalistBonus=25
|
||||||
|
|
||||||
;Changes the bonus for 'Master Trader' perk (ID 17)
|
;Changes the bonus for 'Master Trader' perk (ID 17)
|
||||||
;25 - default bonus
|
;25 - default bonus
|
||||||
MasterTraderBonus=25
|
MasterTraderBonus=25
|
||||||
|
|
||||||
|
;Changes the Science and Repair skill bonus for 'Mr.Fixit' perk (ID 31)
|
||||||
|
;125 - maximum bonus, 10 - default bonus
|
||||||
|
MrFixitBonus=10
|
||||||
|
|
||||||
|
;Changes the skill bonuses for 'Medic' perk (ID 32)
|
||||||
|
;125 - maximum bonus, 10 - default bonus
|
||||||
|
MedicFirstAidBonus=10
|
||||||
|
MedicDoctorBonus=10
|
||||||
|
|
||||||
|
;Changes the Lockpick and Steal skill bonus for 'Master Thief' perk (ID 33)
|
||||||
|
;125 - maximum bonus, 15 - default bonus
|
||||||
|
MasterThiefBonus=15
|
||||||
|
|
||||||
|
;Changes the Speech skill bonus for 'Speaker' perk (ID 34)
|
||||||
|
;125 - maximum bonus, 20 - default bonus
|
||||||
|
SpeakerBonus=20
|
||||||
|
|
||||||
|
;Changes the Sneak skill bonus (when in darkness) for 'Ghost' perk (ID 38)
|
||||||
|
;125 - maximum bonus, 20 - default bonus
|
||||||
|
GhostBonus=20
|
||||||
|
|
||||||
|
;Changes the Outdoorsman skill bonus for 'Ranger' perk (ID 47)
|
||||||
|
;125 - maximum bonus, 15 - default bonus
|
||||||
|
RangerOutdoorsmanBonus=15
|
||||||
|
|
||||||
;Changes the distance bonus for 'Weapon Long Range' weapon perk (ID 58)
|
;Changes the distance bonus for 'Weapon Long Range' weapon perk (ID 58)
|
||||||
;2 - no bonus, 4 - default bonus
|
;2 - no bonus, 4 - default bonus
|
||||||
WeaponLongRangeBonus=4
|
WeaponLongRangeBonus=4
|
||||||
@@ -34,9 +63,22 @@ VaultCityInoculationsRadBonus=10
|
|||||||
;999 - maximum bonus, 10 - default bonus
|
;999 - maximum bonus, 10 - default bonus
|
||||||
DemolitionExpertBonus=10
|
DemolitionExpertBonus=10
|
||||||
|
|
||||||
;Changes the damage bonus for 'Living Anatomy' perk (ID 97)
|
;Changes the Gambling skill bonus for 'Gambler' perk (ID 83)
|
||||||
;125 - maximum bonus, 5 - default bonus
|
;125 - maximum bonus, 20 - default bonus
|
||||||
|
GamblerBonus=20
|
||||||
|
|
||||||
|
;Changes the Steal skill bonus for 'Harmless' perk (ID 91)
|
||||||
|
;125 - maximum bonus, 20 - default bonus
|
||||||
|
HarmlessBonus=20
|
||||||
|
|
||||||
|
;Changes the damage bonus and the Doctor skill bonus for 'Living Anatomy' perk (ID 97)
|
||||||
|
;125 - maximum bonus, 5 - default bonus, 10 - default skill bonus
|
||||||
LivingAnatomyBonus=5
|
LivingAnatomyBonus=5
|
||||||
|
LivingAnatomyDoctorBonus=10
|
||||||
|
|
||||||
|
;Changes the Speech and Barter skill bonus for 'Negotiator' perk (ID 99)
|
||||||
|
;125 - maximum bonus, 10 - default bonus
|
||||||
|
NegotiatorBonus=10
|
||||||
|
|
||||||
;Changes the damage bonus for 'Pyromaniac' perk (ID 101)
|
;Changes the damage bonus for 'Pyromaniac' perk (ID 101)
|
||||||
;125 - maximum bonus, 5 - default bonus
|
;125 - maximum bonus, 5 - default bonus
|
||||||
@@ -50,10 +92,23 @@ SalesmanBonus=20
|
|||||||
;valid range: 0..100, 50 - default percent
|
;valid range: 0..100, 50 - default percent
|
||||||
StonewallPercent=50
|
StonewallPercent=50
|
||||||
|
|
||||||
|
;Changes the Lockpick, Steal, and Traps skill bonus for 'Thief' perk (ID 105)
|
||||||
|
;125 - maximum bonus, 10 - default bonus
|
||||||
|
ThiefBonus=10
|
||||||
|
|
||||||
;Changes the strength bonus for 'Weapon Handling' perk (ID 106)
|
;Changes the strength bonus for 'Weapon Handling' perk (ID 106)
|
||||||
;0 - no bonus, 10 - maximum bonus, 3 - default bonus
|
;0 - no bonus, 10 - maximum bonus, 3 - default bonus
|
||||||
WeaponHandlingBonus=3
|
WeaponHandlingBonus=3
|
||||||
|
|
||||||
|
;Changes the skill bonuses for 'Vault City Training' perk (ID 107)
|
||||||
|
;125 - maximum bonus, 5 - default bonus
|
||||||
|
VaultCityTrainingFirstAidBonus=5
|
||||||
|
VaultCityTrainingDoctorBonus=5
|
||||||
|
|
||||||
|
;Changes the Speech skill bonus for 'Expert Excrement Expeditor' perk (ID 116)
|
||||||
|
;125 - maximum bonus, 5 - default bonus
|
||||||
|
ExpertExcrementExpeditorBonus=5
|
||||||
|
|
||||||
;##############################################################################
|
;##############################################################################
|
||||||
[Perks]
|
[Perks]
|
||||||
;Set to 1 to enable the modifications for perks
|
;Set to 1 to enable the modifications for perks
|
||||||
@@ -64,20 +119,25 @@ Enable=0
|
|||||||
;Image: The line number (0-indexed) of the corresponding FRM in skilldex.lst
|
;Image: The line number (0-indexed) of the corresponding FRM in skilldex.lst
|
||||||
;Ranks: The number of perk levels
|
;Ranks: The number of perk levels
|
||||||
;Level: The minimum required level
|
;Level: The minimum required level
|
||||||
;Type: If 0, the perk checks only Skill1 for skill requirements; if 1, it checks Skill1 or Skill2; if 2, it checks both Skill1 and Skill2
|
;Type: If 0, the perk checks only Skill1 for skill requirements; if 1, it checks Skill1 or Skill2; if 2, it checks both
|
||||||
|
; Skill1 and Skill2
|
||||||
;Stat: The modified stat or -1 if you don't want to change any stats
|
;Stat: The modified stat or -1 if you don't want to change any stats
|
||||||
;StatMag: The increased/decreased value to the modified stat
|
;StatMag: The increased/decreased value to the modified stat
|
||||||
|
|
||||||
;Skill1/Skill2: The first/second skill (or -1 for none) to check, but if you set a specific bit 0x4000000 (67108864), it checks GVAR.
|
;Skill1/Skill2: The first/second skill (or -1 for none) to check, but if you set a specific bit 0x4000000 (67108864),
|
||||||
; For example, if Skill1=0x4000004, then the perk will check GVAR_BAD_MONSTER (0x4000000 + 4) on Skill1Mag value
|
; it checks the corresponding GVAR
|
||||||
|
; For example, if Skill1=0x4000004, the perk will check GVAR_BAD_MONSTER (0x4000000 + 4) on Skill1Mag value
|
||||||
|
|
||||||
;Skill1Mag/Skill2Mag: Positive value is used as the minimum requirements of the first/second skill/GVAR, and a negative value is interpreted as the maximum requirement.
|
;Skill1Mag/Skill2Mag: Positive value is used as the minimum requirements of the first/second skill/GVAR, and a negative
|
||||||
; For example, with Skill1=0 and Skill1Mag=100, if player has small guns skill >= 100 and meets all other requirements, the perk will be available in the
|
; value is interpreted as the maximum requirement
|
||||||
; selection window; with Skill1=1 and Skill1Mag=-120, the perk will not be available if player has big guns skill >= 120
|
; For example, with Skill1=0 and Skill1Mag=100, if player has small guns skill >= 100 and meets all other requirements,
|
||||||
|
; the perk will be available in the selection window; with Skill1=1 and Skill1Mag=-120, the perk will not be available
|
||||||
|
; if player has big guns skill >= 120
|
||||||
|
|
||||||
;STR-LCK: Positive values are used as minimum requirements of SPECIAL stats, and negative values are interpreted as maximum requirements.
|
;STR-LCK: Positive values are used as minimum requirements of SPECIAL stats, and negative values are interpreted as
|
||||||
; For some special perks processed by the engine (e.g. PERK_armor_powered and PERK_armor_combat), the values are not used as requirements
|
; maximum requirements
|
||||||
; but to add to corresponding SPECIAL stats
|
; For some special perks processed by the engine (e.g. PERK_armor_powered and PERK_armor_combat), the values are not
|
||||||
|
; used as requirements but to add to corresponding SPECIAL stats
|
||||||
|
|
||||||
;If the value is set to -99999, the variable will be ignored (similar to comment out that line)
|
;If the value is set to -99999, the variable will be ignored (similar to comment out that line)
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,12 @@ PartyLvlMsg=Lvl:
|
|||||||
PartyACMsg=AC:
|
PartyACMsg=AC:
|
||||||
PartyAddictMsg=Addict
|
PartyAddictMsg=Addict
|
||||||
NPCPickupFail=%s cannot pick up the item.
|
NPCPickupFail=%s cannot pick up the item.
|
||||||
|
AmmoInfoGlovz=Div: DR/%d, DT/%d
|
||||||
|
AmmoInfoYAAM=DT Mod: %d
|
||||||
|
|
||||||
|
PartyOrderAttackHuman=I'll take care of it.|Okay, I got it.|Sounds like a plan.
|
||||||
|
PartyOrderAttackCreature=::Growl::
|
||||||
|
PartyOrderAttackRobot=::Beep::
|
||||||
|
|
||||||
[AppearanceMod]
|
[AppearanceMod]
|
||||||
RaceText=Race
|
RaceText=Race
|
||||||
|
|||||||
@@ -10,4 +10,4 @@
|
|||||||
;in the proto for other items, so AI will use them for healing in combat as well
|
;in the proto for other items, so AI will use them for healing in combat as well
|
||||||
STIMPAK=40
|
STIMPAK=40
|
||||||
SUPER_STIMPAK=144
|
SUPER_STIMPAK=144
|
||||||
HEALING_POWDER=237
|
HEALING_POWDER=273
|
||||||
|
|||||||
+112
-64
@@ -1,5 +1,5 @@
|
|||||||
;sfall configuration settings
|
;sfall configuration settings
|
||||||
;v3.8.35
|
;v3.8.43.1
|
||||||
|
|
||||||
[Main]
|
[Main]
|
||||||
;Set to 1 if you want to use command line arguments to tell sfall to use another ini file
|
;Set to 1 if you want to use command line arguments to tell sfall to use another ini file
|
||||||
@@ -10,6 +10,24 @@ UseCommandLine=0
|
|||||||
;This file can be placed in text\<language>\ for sfall to get the translations depending on the game language
|
;This file can be placed in text\<language>\ for sfall to get the translations depending on the game language
|
||||||
;TranslationsINI=sfall\Translations.ini
|
;TranslationsINI=sfall\Translations.ini
|
||||||
|
|
||||||
|
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||||
|
[ExtraPatches]
|
||||||
|
;This section allows you to set multiple paths to folders containing mods or patches
|
||||||
|
;Paths to folders and Fallout .dat files are supported
|
||||||
|
;The PatchFileXX options are available from 0 to 99. Larger numbers take precedence over smaller numbers (same as patchXXX.dat)
|
||||||
|
;Starting from 4.4/3.8.40, the game will load custom .dat files and folders from <GameRoot>\mods\mods_order.txt
|
||||||
|
;The files and folders in mods_order.txt will have a higher priority than the PatchFileXX options
|
||||||
|
;The complete order of how the engine loads game data is:
|
||||||
|
;master_patches > critter_patches > mods_order.txt > PatchFileXX > patchXXX.dat > sfall.dat > critter_dat > f2_res_patches > f2_res_dat > master_dat
|
||||||
|
;PatchFile0=mods\RP_data
|
||||||
|
;PatchFile1=
|
||||||
|
|
||||||
|
;Some details about mods_order.txt:
|
||||||
|
;If mods_order.txt does not exist, sfall will create one in <GameRoot>\mods\
|
||||||
|
;To install a new mod, copy the file/folder to <GameRoot>\mods\ and add its name to mods_order.txt
|
||||||
|
;Mods will be loaded line by line from top to bottom. You can change the load order in a text editor
|
||||||
|
;To disable a mod temporarily, you can comment it out by adding a ';' or '#' to the beginning of the line
|
||||||
|
|
||||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||||
[Speed]
|
[Speed]
|
||||||
;Set to 1 to enable options related to the game speed adjustment (SpeedMulti#, SpeedKey#, SpeedModKey, and SpeedToggleKey)
|
;Set to 1 to enable options related to the game speed adjustment (SpeedMulti#, SpeedKey#, SpeedModKey, and SpeedToggleKey)
|
||||||
@@ -35,10 +53,11 @@ SpeedMultiInitial=100
|
|||||||
;Set to 0 for 8 bit fullscreen
|
;Set to 0 for 8 bit fullscreen
|
||||||
;Set to 4 for DX9 fullscreen
|
;Set to 4 for DX9 fullscreen
|
||||||
;Set to 5 for DX9 windowed
|
;Set to 5 for DX9 windowed
|
||||||
;Set to 6 for DX9 fullscreen windowed (the resolution in f2_res.ini should be set to the same aspect ratio as your desktop resolution)
|
;Set to 6 for DX9 fullscreen windowed (the resolution in f2_res.ini should be in the same aspect ratio as your desktop resolution)
|
||||||
;A DX9 mode is required for any graphics related script extender functions to work (i.e. fullscreen shaders)
|
;A DX9 mode is required for any graphics related script extender functions to work (i.e. fullscreen shaders)
|
||||||
;Modes 1, 2 and 3 are no longer supported
|
;Modes 1, 2 and 3 are no longer supported
|
||||||
;This option will always be read from the main ddraw.ini file when using the hi-res patch by Mash
|
;If using the hi-res patch by Mash, this option will always be read from the main ddraw.ini file
|
||||||
|
;Note: When using an external DirectDraw wrapper (ddraw.dll file in <GameRoot>\wrapper\), DX9 mode will not be available
|
||||||
Mode=0
|
Mode=0
|
||||||
|
|
||||||
;If using a DX9 mode, this changes the resolution
|
;If using a DX9 mode, this changes the resolution
|
||||||
@@ -48,7 +67,7 @@ GraphicsWidth=0
|
|||||||
GraphicsHeight=0
|
GraphicsHeight=0
|
||||||
|
|
||||||
;Window position data. Do not modify
|
;Window position data. Do not modify
|
||||||
;Set to -1 or 0 to reset if the window position is incorrect
|
;Set to -1 or 0 to reset the window position to the center or top-left corner
|
||||||
WindowData=-1
|
WindowData=-1
|
||||||
|
|
||||||
;Uncomment the option to use a hardware shader (requires DX9 graphics mode)
|
;Uncomment the option to use a hardware shader (requires DX9 graphics mode)
|
||||||
@@ -68,7 +87,7 @@ TextureFilter=1
|
|||||||
GPUBlt=0
|
GPUBlt=0
|
||||||
|
|
||||||
;Set to 1 to allow using 32-bit textures for talking heads
|
;Set to 1 to allow using 32-bit textures for talking heads
|
||||||
;The texture files should be placed in art\heads\<name of the talking head FRM file>\ (w/o extension)
|
;The texture files should be placed in art\heads\<name of the talking head FRM file>\ (without extension)
|
||||||
;The files in the folder should be numbered according to the number of frames in the talking head FRM file (0.png, 1.png, etc.)
|
;The files in the folder should be numbered according to the number of frames in the talking head FRM file (0.png, 1.png, etc.)
|
||||||
;See the text file in the modders pack for a detailed description
|
;See the text file in the modders pack for a detailed description
|
||||||
;Requires DX9 graphics mode and v2.0 pixel shader support (see GPUBlt option)
|
;Requires DX9 graphics mode and v2.0 pixel shader support (see GPUBlt option)
|
||||||
@@ -101,14 +120,14 @@ WorldMapTerrainInfo=0
|
|||||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||||
[Sound]
|
[Sound]
|
||||||
;Sets the number of allowed simultaneous sound effects
|
;Sets the number of allowed simultaneous sound effects
|
||||||
;Set to 0 to leave the default unchanged (i.e. 4). The maximum is 32
|
;Set to 0 to leave the default unchanged (i.e. 8). The maximum is 32
|
||||||
NumSoundBuffers=0
|
NumSoundBuffers=8
|
||||||
|
|
||||||
;Set to 1 to allow attaching sound files to combat float messages
|
;Set to 1 to allow attaching sound files to combat float messages
|
||||||
AllowSoundForFloats=0
|
AllowSoundForFloats=0
|
||||||
|
|
||||||
;Set to 1 to automatically search for alternative formats (mp3/wma/wav) when Fallout tries to play an ACM
|
;Set to 1 to automatically search for alternative formats (mp3/wma/wav) when Fallout tries to play an ACM
|
||||||
;Set to 2 to play alternative music files even if original ACM files are not present in the music folder
|
;Alternative music files will play even if original ACM files are not present in the music folder
|
||||||
;This does not effect the play_sfall_sound and stop_sfall_sound script functions
|
;This does not effect the play_sfall_sound and stop_sfall_sound script functions
|
||||||
AllowDShowSound=0
|
AllowDShowSound=0
|
||||||
|
|
||||||
@@ -121,6 +140,15 @@ OverrideMusicDir=1
|
|||||||
;This will slightly increase the startup time of the game on older computers
|
;This will slightly increase the startup time of the game on older computers
|
||||||
AutoSearchSFX=1
|
AutoSearchSFX=1
|
||||||
|
|
||||||
|
;Uncomment these lines to override the names of sound files used by the engine
|
||||||
|
;Filenames are limited to 8 characters (without extension)
|
||||||
|
;MainMenuMusic=07desert
|
||||||
|
;WorldMapMusic=23world
|
||||||
|
;WorldMapCarMusic=20car
|
||||||
|
;EndGameMovieMusic0=akiss
|
||||||
|
;EndGameMovieMusic1=10labone
|
||||||
|
;MapLoadingSound=wind2
|
||||||
|
|
||||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||||
[Input]
|
[Input]
|
||||||
;Set to 1 to enable the mouse scroll wheel to scroll through the inventory, barter, and loot screens
|
;Set to 1 to enable the mouse scroll wheel to scroll through the inventory, barter, and loot screens
|
||||||
@@ -132,7 +160,7 @@ UseScrollWheel=1
|
|||||||
;Set to 0 to only ever scroll 1 click
|
;Set to 0 to only ever scroll 1 click
|
||||||
ScrollMod=0
|
ScrollMod=0
|
||||||
|
|
||||||
;Adjusts mouse sensitivity to some percentage of normal.
|
;Adjusts mouse sensitivity to some percentage of normal
|
||||||
;Negative values are valid if you want your mouse axis reversed for some reason
|
;Negative values are valid if you want your mouse axis reversed for some reason
|
||||||
MouseSensitivity=100
|
MouseSensitivity=100
|
||||||
|
|
||||||
@@ -196,7 +224,7 @@ HighlightCorpses=0
|
|||||||
;16 - bright yellow
|
;16 - bright yellow
|
||||||
;32 - dark yellow
|
;32 - dark yellow
|
||||||
;64 - purple
|
;64 - purple
|
||||||
;You can set a custom color from the game palette by multiplying the color index value by 256 (available since sfall 3.8.27)
|
;You can set a custom color from the game palette by multiplying the color index value by 256 (in 3.8.27 or later)
|
||||||
OutlineColor=16
|
OutlineColor=16
|
||||||
|
|
||||||
;A key to press to reload your currently equipped weapon or use the active item
|
;A key to press to reload your currently equipped weapon or use the active item
|
||||||
@@ -269,9 +297,9 @@ UseFileSystemOverride=0
|
|||||||
;If you want to load multiple patch files (up to 1000) at once, you can include a %d in the file name (sprintf syntax)
|
;If you want to load multiple patch files (up to 1000) at once, you can include a %d in the file name (sprintf syntax)
|
||||||
;PatchFile=patch%03d.dat
|
;PatchFile=patch%03d.dat
|
||||||
|
|
||||||
;Set to 1 to use the modified data load order for the engine to find game data
|
;Set to 1 to change the order of how the engine loads game data
|
||||||
;Original: patchXXX.dat > critter_patches > critter_dat > f2_res_patches > f2_res_dat > master_patches > master_dat
|
;Old: patchXXX.dat > critter_patches > critter_dat > f2_res_patches > f2_res_dat > master_patches > master_dat
|
||||||
;Modified: master_patches > critter_patches > patchXXX.dat > critter_dat > f2_res_patches > f2_res_dat > 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. The information is left for reference only
|
||||||
DataLoadOrderPatch=1
|
DataLoadOrderPatch=1
|
||||||
|
|
||||||
@@ -279,21 +307,20 @@ DataLoadOrderPatch=1
|
|||||||
;Set to 2 to also load subtitle files from text\<language>\cuts_female\ for female PC
|
;Set to 2 to also load subtitle files from text\<language>\cuts_female\ for female PC
|
||||||
FemaleDialogMsgs=0
|
FemaleDialogMsgs=0
|
||||||
|
|
||||||
;Set to 1 to allow using the special '^' character in dialog msg files to specify the alternative text
|
;Set to 1 to allow using the caret character '^' in dialog msg files to specify alternative text in dialogue based on the player's gender
|
||||||
;that will be displayed in the dialogue based on the player's gender
|
|
||||||
;The text must be enclosed in angle brackets (example: <MaleText^FemaleText>)
|
;The text must be enclosed in angle brackets (example: <MaleText^FemaleText>)
|
||||||
DialogGenderWords=0
|
DialogGenderWords=0
|
||||||
|
|
||||||
;To change the default and starting player models, uncomment the next four lines.
|
;To change the default and starting player models, uncomment the next four lines
|
||||||
;The default models can also be changed ingame via script
|
;The default models can also be changed in-game via script
|
||||||
;MaleStartModel=hmwarr
|
;MaleStartModel=hmwarr
|
||||||
;MaleDefaultModel=hmjmps
|
;MaleDefaultModel=hmjmps
|
||||||
;FemaleStartModel=hfprim
|
;FemaleStartModel=hfprim
|
||||||
;FemaleDefaultModel=hfjmps
|
;FemaleDefaultModel=hfjmps
|
||||||
|
|
||||||
;To change the various ingame movies, modify the next 17 lines
|
;To change the various in-game movies, modify the next 17 lines
|
||||||
;You can also define additional movies by adding Movie18 - Movie32 lines
|
;You can also define additional movies by adding Movie18 - Movie32 lines
|
||||||
;Most of these can also be changed ingame via script
|
;Most of these can also be changed in-game via script
|
||||||
Movie1=iplogo.mve
|
Movie1=iplogo.mve
|
||||||
Movie2=intro.mve
|
Movie2=intro.mve
|
||||||
Movie3=elder.mve
|
Movie3=elder.mve
|
||||||
@@ -319,7 +346,7 @@ Movie17=credits.mve
|
|||||||
;StartDay=-1
|
;StartDay=-1
|
||||||
|
|
||||||
;To change the limit of the distance away from the player to which you're allowed to scroll the local maps, uncomment the next two lines
|
;To change the limit of the distance away from the player to which you're allowed to scroll the local maps, uncomment the next two lines
|
||||||
;Defaults are 480 in the x direction and 400 in the y direction.
|
;Defaults are 480 in the x direction and 400 in the y direction
|
||||||
;Does not work with the hi-res patch by Mash!
|
;Does not work with the hi-res patch by Mash!
|
||||||
;LocalMapXLimit=480
|
;LocalMapXLimit=480
|
||||||
;LocalMapYLimit=400
|
;LocalMapYLimit=400
|
||||||
@@ -330,20 +357,20 @@ PipBoyAvailableAtGameStart=0
|
|||||||
|
|
||||||
;Set to 1 to double the number of available kill types
|
;Set to 1 to double the number of available kill types
|
||||||
;If you use this, you need to provide the extra descriptions in proto.msg (entries from 1450 to 1487 are names and 1488 to 1525 are descriptions)
|
;If you use this, you need to provide the extra descriptions in proto.msg (entries from 1450 to 1487 are names and 1488 to 1525 are descriptions)
|
||||||
;Changing this option mid game will not invalidate old save games, but the player's kill counters will be completely screwed.
|
;Changing this option mid game will not invalidate old save games, but the player's kill counters will be completely screwed
|
||||||
;Setting this to 1 may cause problems if the player kills more than 32767 of any one critter type
|
;Setting this to 1 may cause problems if the player kills more than 32767 of any one critter type
|
||||||
;Additional kill types must have their new critical tables set! (See the OverrideCriticalTable option)
|
;Additional kill types must have their new critical tables set! (See the OverrideCriticalTable option)
|
||||||
ExtraKillTypes=0
|
ExtraKillTypes=0
|
||||||
|
|
||||||
;Choose the damage formula used to calculate combat damage.
|
;Choose the damage formula used to calculate combat damage
|
||||||
;Don't set this to anything other than 0 unless another mod you're using explicitly tells you to!
|
;Don't set this to anything other than 0 unless another mod you're using explicitly tells you to!
|
||||||
;0 - Fallout default
|
;0 - Fallout default
|
||||||
;1 - Glovz's Damage Fix
|
;1 - Glovz's Damage Fix
|
||||||
;2 - Glovz's Damage Fix with Damage Multiplier tweak
|
;2 - Glovz's Damage Fix with Damage Multiplier tweak
|
||||||
;5 - Haenlomal's Yet Another Ammo Mod.
|
;5 - Haenlomal's Yet Another Ammo Mod
|
||||||
DamageFormula=0
|
DamageFormula=0
|
||||||
|
|
||||||
;Prevents you from using 0 to escape from dialogue at any time.
|
;Prevents you from using 0 to escape from dialogue at any time
|
||||||
DialogueFix=1
|
DialogueFix=1
|
||||||
|
|
||||||
;Prevents you from using number keys to enter unvisited areas on a town map
|
;Prevents you from using number keys to enter unvisited areas on a town map
|
||||||
@@ -352,7 +379,7 @@ TownMapHotkeysFix=1
|
|||||||
;Set to 1 to disable the Horrigan encounter
|
;Set to 1 to disable the Horrigan encounter
|
||||||
DisableHorrigan=0
|
DisableHorrigan=0
|
||||||
|
|
||||||
;Set to 1 to disable the random element in NPC levelling.
|
;Set to 1 to disable the random element in NPC levelling
|
||||||
;This will cause all NPC party members to automatically level up as soon as the player reaches the requirements
|
;This will cause all NPC party members to automatically level up as soon as the player reaches the requirements
|
||||||
NPCAutoLevel=0
|
NPCAutoLevel=0
|
||||||
|
|
||||||
@@ -374,13 +401,14 @@ OverrideArtCacheSize=0
|
|||||||
;Set to 2 to block all saving in combat
|
;Set to 2 to block all saving in combat
|
||||||
SaveInCombatFix=1
|
SaveInCombatFix=1
|
||||||
|
|
||||||
;Uncomment and set a comma delimited list of numbers to use a custom xp table.
|
;Uncomment and set a comma-delimited list of numbers to use a custom xp table
|
||||||
;Player's level is capped once the highest specified level is reached
|
;Player's level is capped once the highest specified level is reached
|
||||||
;XPTable=50,100,200
|
;XPTable=50,100,200
|
||||||
|
|
||||||
;Set to 1 to enable additional weapon animation codes from 'o' to 't'
|
;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
|
;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'
|
;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
|
||||||
AdditionalWeaponAnims=1
|
AdditionalWeaponAnims=1
|
||||||
|
|
||||||
;Uncomment these lines to modify the default modifiers for aimed shots at specific bodyparts
|
;Uncomment these lines to modify the default modifiers for aimed shots at specific bodyparts
|
||||||
@@ -420,7 +448,7 @@ CorpseDeleteTime=6
|
|||||||
;Set a number of milliseconds to idle each input loop
|
;Set a number of milliseconds to idle each input loop
|
||||||
;Set to -1 to disable
|
;Set to -1 to disable
|
||||||
;Set to 0 to idle only if other processes are waiting for processor time (WinXP/2000: if processes have equal priority)
|
;Set to 0 to idle only if other processes are waiting for processor time (WinXP/2000: if processes have equal priority)
|
||||||
;Set to 1 (or some higher number if needed) to prevent 100% CPU use. The maximum is 30
|
;Set to 1 (or some higher number if needed) to prevent 100% CPU use. The maximum is 50
|
||||||
ProcessorIdle=-1
|
ProcessorIdle=-1
|
||||||
|
|
||||||
;Set to 1 if using the hero appearance mod
|
;Set to 1 if using the hero appearance mod
|
||||||
@@ -432,8 +460,8 @@ EnableHeroAppearanceMod=0
|
|||||||
;Set to 2 to also skip the splash screen
|
;Set to 2 to also skip the splash screen
|
||||||
SkipOpeningMovies=0
|
SkipOpeningMovies=0
|
||||||
|
|
||||||
;Causes NPCs who complete their combat turn with AP left over will try and find other ways to spend it.
|
;Causes NPCs who complete their combat turn with AP left over will try and find other ways to spend it
|
||||||
;Only NPCs with AP left equal to or greater than the value given here will be considered.
|
;Only NPCs with AP left equal to or greater than the value given here will be considered
|
||||||
;Set to 0 to disable
|
;Set to 0 to disable
|
||||||
NPCsTryToSpendExtraAP=0
|
NPCsTryToSpendExtraAP=0
|
||||||
|
|
||||||
@@ -443,7 +471,8 @@ NPCsTryToSpendExtraAP=0
|
|||||||
AllowLargeTiles=0
|
AllowLargeTiles=0
|
||||||
|
|
||||||
;Set to 1 to boost the maximum number of tile FRMs from 4096 to 16383
|
;Set to 1 to boost the maximum number of tile FRMs from 4096 to 16383
|
||||||
MoreTiles=0
|
;This option is always enabled in 4.3.7/3.8.37 or later. The information is left for reference only
|
||||||
|
MoreTiles=1
|
||||||
|
|
||||||
;Change the Skilldex cursor FRM numbers
|
;Change the Skilldex cursor FRM numbers
|
||||||
;Default is 293 for all skills
|
;Default is 293 for all skills
|
||||||
@@ -471,7 +500,7 @@ UseScrollingQuestsList=1
|
|||||||
;PremadeFIDs=201,203,202
|
;PremadeFIDs=201,203,202
|
||||||
|
|
||||||
;Use this line to modify the list of cities and their associated global variables used for city reputations
|
;Use this line to modify the list of cities and their associated global variables used for city reputations
|
||||||
;Syntax is 'city id:global id', with each city/global pair separated by a comma.
|
;Syntax is 'city id:global id', with each city/global pair separated by a comma
|
||||||
;CityRepsList=0:47,2:48,1:49,4:50,5:51,3:52,8:53,6:54,7:55,13:56,10:57,11:59,14:61,17:63,19:64,18:65,25:66,9:294,20:308
|
;CityRepsList=0:47,2:48,1:49,4:50,5:51,3:52,8:53,6:54,7:55,13:56,10:57,11:59,14:61,17:63,19:64,18:65,25:66,9:294,20:308
|
||||||
|
|
||||||
;Set this to a valid path to save a copy of the console contents
|
;Set this to a valid path to save a copy of the console contents
|
||||||
@@ -491,7 +520,6 @@ AutoQuickSavePage=1
|
|||||||
|
|
||||||
;Set to 1 to speed up the HP/AC counter animations
|
;Set to 1 to speed up the HP/AC counter animations
|
||||||
;Set to 2 to update the HP/AC counters instantly
|
;Set to 2 to update the HP/AC counters instantly
|
||||||
;Set to 3 to update the AC counter instantly when switching to other controlled critters in combat
|
|
||||||
SpeedInterfaceCounterAnims=0
|
SpeedInterfaceCounterAnims=0
|
||||||
|
|
||||||
;These lines allow you to control the karma FRMs displayed on the character screen
|
;These lines allow you to control the karma FRMs displayed on the character screen
|
||||||
@@ -503,30 +531,33 @@ SpeedInterfaceCounterAnims=0
|
|||||||
ScienceOnCritters=0
|
ScienceOnCritters=0
|
||||||
|
|
||||||
;Modify this value to change the player's speed of rotation on the inventory and character screens
|
;Modify this value to change the player's speed of rotation on the inventory and character screens
|
||||||
;Default is 166
|
;Default is 166 (lower - faster; valid range: 0..1000)
|
||||||
SpeedInventoryPCRotation=166
|
SpeedInventoryPCRotation=166
|
||||||
|
|
||||||
;Modify the number of the extra interface boxes available to modders. (Default is 5, and the maximum is 95)
|
;Modify the number of the extra interface boxes available to modders (Default is 5, and the maximum is 95)
|
||||||
BoxBarCount=5
|
BoxBarCount=5
|
||||||
|
|
||||||
;Uncomment to set the text colour of the extra interface boxes
|
;Uncomment to set the text colour of the extra interface boxes
|
||||||
;The line must contain the same number of digits as the value of BoxBarCount, each either a 0 for green or 1 for red
|
;The line must contain the same number of digits as the value of BoxBarCount, each either a 0 for green or 1 for red
|
||||||
;BoxBarColours=00000
|
;BoxBarColours=00000
|
||||||
|
|
||||||
;Set to 1 to fix the bug that caused bonus HtH damage to not be applied correctly.
|
;Set to 1 to fix the bug that caused bonus HtH damage to not be applied correctly
|
||||||
BonusHtHDamageFix=1
|
BonusHtHDamageFix=1
|
||||||
|
|
||||||
;Set to 1 to display additional points of damage from Bonus HtH/Ranged Damage perks in the inventory
|
;Set to 1 to display additional points of damage from Bonus HtH/Ranged Damage perks in the inventory
|
||||||
DisplayBonusDamage=0
|
DisplayBonusDamage=0
|
||||||
|
|
||||||
;Modify the maximum number of animations allowed to run on a map. (Default is 32, and the maximum is 127)
|
;Modify the maximum number of animations allowed to run on a map (Default is 32, and the maximum is 127)
|
||||||
AnimationsAtOnceLimit=120
|
AnimationsAtOnceLimit=64
|
||||||
|
|
||||||
;Set to 1 to remove the limits that stop the player rolling critical successes/misses in the first few days of game time
|
;Set to 1 to remove the limits that stop the game from rolling critical successes/failures in the first few days of game time
|
||||||
RemoveCriticalTimelimits=0
|
RemoveCriticalTimelimits=0
|
||||||
|
|
||||||
;Change the colour of the font used on the main menu for the Fallout/sfall version number and copyright text
|
;Change the colour of the font used on the main menu for the Fallout/sfall version string and copyright text
|
||||||
;It's the last byte ('3C' by default) that picks the colour used. The first byte supplies additional flags for this option
|
;It's the last byte ('3C' by default) that picks the colour used. The first byte supplies additional flags for this option
|
||||||
|
;1 - change the colour for the version string only
|
||||||
|
;2 - underline text for the version string
|
||||||
|
;4 - use monospace font for the version string
|
||||||
;MainMenuFontColour=0x00003C
|
;MainMenuFontColour=0x00003C
|
||||||
;Change the colour of the font used on the main menu for the button text
|
;Change the colour of the font used on the main menu for the button text
|
||||||
;MainMenuBigFontColour=0x3C
|
;MainMenuBigFontColour=0x3C
|
||||||
@@ -553,7 +584,7 @@ CritterInvSizeLimitMode=0
|
|||||||
CritterInvSizeLimit=200
|
CritterInvSizeLimit=200
|
||||||
|
|
||||||
;Some bit flags to alter behaviour of the motion sensor
|
;Some bit flags to alter behaviour of the motion sensor
|
||||||
;1 - Allow sensor use on automap when motion sensor is in pack rather than hands
|
;1 - Allow sensor use on automap when the motion sensor is in the pack rather than hands
|
||||||
;2 - Motion sensor doesn't require charges
|
;2 - Motion sensor doesn't require charges
|
||||||
;4 - Motion sensor is required to use the item highlight feature
|
;4 - Motion sensor is required to use the item highlight feature
|
||||||
MotionScannerFlags=1
|
MotionScannerFlags=1
|
||||||
@@ -573,7 +604,7 @@ DisablePipboyAlarm=0
|
|||||||
;MainMenuCreditsOffsetX=0
|
;MainMenuCreditsOffsetX=0
|
||||||
;MainMenuCreditsOffsetY=0
|
;MainMenuCreditsOffsetY=0
|
||||||
|
|
||||||
;Prevents you from using super stims on a critter who is at full health.
|
;Prevents you from using super stims on a critter who is at full health
|
||||||
SuperStimExploitFix=0
|
SuperStimExploitFix=0
|
||||||
|
|
||||||
;Change the AP cost for accessing inventory in combat, and the related effect of Quick Pockets perk
|
;Change the AP cost for accessing inventory in combat, and the related effect of Quick Pockets perk
|
||||||
@@ -606,10 +637,10 @@ ExplosionsEmitLight=0
|
|||||||
;MovieTimer_artimer3=270
|
;MovieTimer_artimer3=270
|
||||||
;MovieTimer_artimer4=360
|
;MovieTimer_artimer4=360
|
||||||
|
|
||||||
;Set to 1 to add proper check for ammo before attacking and proper calculation of the number of burst rounds
|
;Set to 1 to add proper checks for ammo before attacking
|
||||||
;By default, weapons can make attacks when at least one ammo is left, regardless of ammo cost calculations
|
;By default, a weapon can perform an attack with at least one ammo, regardless of ammo cost calculation
|
||||||
;Note that enabling this option will prevent super cattle prods and mega power fists from attacking with only one ammo left
|
;Note that enabling this option will prevent super cattle prods and mega power fists from attacking with only one ammo left
|
||||||
CheckWeaponAmmoCost=0
|
CheckWeaponAmmoCost=1
|
||||||
|
|
||||||
;Controls the speed of combat panel animations (lower - faster; valid range: 0..65535)
|
;Controls the speed of combat panel animations (lower - faster; valid range: 0..65535)
|
||||||
CombatPanelAnimDelay=1000
|
CombatPanelAnimDelay=1000
|
||||||
@@ -618,16 +649,9 @@ DialogPanelAnimDelay=33
|
|||||||
;Controls the speed of pipboy alarm clock animations (lower - faster; valid range: 0..127)
|
;Controls the speed of pipboy alarm clock animations (lower - faster; valid range: 0..127)
|
||||||
PipboyTimeAnimDelay=50
|
PipboyTimeAnimDelay=50
|
||||||
|
|
||||||
;Allows you to directly control other critters in combat
|
;Set to 1 to let you use the command cursor to specify targets for party members to attack in combat
|
||||||
;Set to 0 to disable
|
;The 'Attack Who' preference in the combat control panel of party members must be set to 'Whomever you want'
|
||||||
;Set to 1 to control all critters in combat
|
PartyOrderToAttack=0
|
||||||
;Set to 2 to control all party members
|
|
||||||
ControlCombat=0
|
|
||||||
;If you want to control only specific critters, uncomment the ControlCombatPIDList line and set a comma delimited list of PIDs
|
|
||||||
;ControlCombatPIDList=62,89,97,107,160,161
|
|
||||||
|
|
||||||
;Set to 1 to stack empty identical weapons, no matter what type of ammo was loaded before
|
|
||||||
StackEmptyWeapons=0
|
|
||||||
|
|
||||||
;Changes the way weapon reloading works when you drag ammo onto a weapon in the inventory
|
;Changes the way weapon reloading works when you drag ammo onto a weapon in the inventory
|
||||||
;Set to -1 to disable (vanilla behavior with the 'Move Items' window)
|
;Set to -1 to disable (vanilla behavior with the 'Move Items' window)
|
||||||
@@ -662,7 +686,7 @@ CanSellUsedGeiger=1
|
|||||||
;Set to 1 to skip weapon equip/unequip animations when performing various actions
|
;Set to 1 to skip weapon equip/unequip animations when performing various actions
|
||||||
InstantWeaponEquip=0
|
InstantWeaponEquip=0
|
||||||
|
|
||||||
;To add additional game msg files, uncomment the next line and set a comma delimited list of filenames without .msg extension
|
;To add additional game msg files, uncomment the next line and set a comma-delimited list of filenames without .msg extension
|
||||||
;By default, the files will have consecutive numbers assigned beginning with 0
|
;By default, the files will have consecutive numbers assigned beginning with 0
|
||||||
;You can use the syntax 'filename:number' to manually assign numbers to specific msg files, with each pair separated by a comma
|
;You can use the syntax 'filename:number' to manually assign numbers to specific msg files, with each pair separated by a comma
|
||||||
;If a file after the specified pair does not have a number assigned, it will have the next consecutive number from the last pair
|
;If a file after the specified pair does not have a number assigned, it will have the next consecutive number from the last pair
|
||||||
@@ -682,9 +706,6 @@ DeathScreenFontPatch=0
|
|||||||
;Set to 1 to display full item description for weapon/ammo in the barter screen
|
;Set to 1 to display full item description for weapon/ammo in the barter screen
|
||||||
FullItemDescInBarter=0
|
FullItemDescInBarter=0
|
||||||
|
|
||||||
;Set to 1 to display experience points with the bonus from Swift Learner perk when gained from non-scripted situations
|
|
||||||
DisplaySwiftLearnerExp=1
|
|
||||||
|
|
||||||
;Set to 1 to display party member's current level/AC/addict flag on the combat control panel
|
;Set to 1 to display party member's current level/AC/addict flag on the combat control panel
|
||||||
PartyMemberExtraInfo=0
|
PartyMemberExtraInfo=0
|
||||||
|
|
||||||
@@ -696,9 +717,6 @@ SkipLoadingGameSettings=0
|
|||||||
;The formula for the duration in ticks is: 10 * (value - 3 * EN)
|
;The formula for the duration in ticks is: 10 * (value - 3 * EN)
|
||||||
KnockoutTime=35
|
KnockoutTime=35
|
||||||
|
|
||||||
;Set to 1 to display sfall built-in credits at the bottom of credits.txt contents instead of at the top
|
|
||||||
CreditsAtBottom=0
|
|
||||||
|
|
||||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||||
; Critical modding options - the following options should be changed with caution
|
; Critical modding options - the following options should be changed with caution
|
||||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||||
@@ -744,10 +762,17 @@ AIBestWeaponFix=1
|
|||||||
|
|
||||||
;Set to 1 to fix NPCs not taking chem_primary_desire in AI.txt as a preference list when using drugs in their inventory
|
;Set to 1 to fix NPCs not taking chem_primary_desire in AI.txt as a preference list when using drugs in their inventory
|
||||||
;Set to 2 to allow NPCs to use only the drugs listed in chem_primary_desire and healing drugs (stimpaks and healing powder)
|
;Set to 2 to allow NPCs to use only the drugs listed in chem_primary_desire and healing drugs (stimpaks and healing powder)
|
||||||
;Note: chem_primary_desire w/o fixes prevents the specified item PID from being consumed if all three values in the list are the same PID
|
;Note: chem_primary_desire without fixes prevents the specified item from being consumed if all three values in the list are the same PID
|
||||||
;chem_primary_desire also works as a priority list of drug items the NPC will try to pick up in combat when they are on the ground
|
;chem_primary_desire also works as a priority list of drug items the NPC will try to pick up in combat when they are on the ground
|
||||||
AIDrugUsePerfFix=0
|
AIDrugUsePerfFix=0
|
||||||
|
|
||||||
|
;Set to 1 to fix the bug of using First Aid/Doctor skills when using them on the player
|
||||||
|
;This will cause the party member to perform First Aid/Doctor skills when you use them on the player, but only if
|
||||||
|
;the player is standing next to the party member
|
||||||
|
;Note that because the related engine function is not fully implemented, enabling this option without a global script
|
||||||
|
;that overrides First Aid/Doctor functions has very limited usefulness
|
||||||
|
PartyMemberSkillFix=0
|
||||||
|
|
||||||
;Overrides the global variable number used to show the special death message of the Modoc toilet explosion
|
;Overrides the global variable number used to show the special death message of the Modoc toilet explosion
|
||||||
;Set to -1 to disable the special death message when the global variable is set
|
;Set to -1 to disable the special death message when the global variable is set
|
||||||
SpecialDeathGVAR=491
|
SpecialDeathGVAR=491
|
||||||
@@ -794,6 +819,13 @@ DisableSpecialAreas=0
|
|||||||
;To change some engine parameters for the game mechanics, uncomment the next line
|
;To change some engine parameters for the game mechanics, uncomment the next line
|
||||||
;TweaksFile=sfall\Tweaks.ini
|
;TweaksFile=sfall\Tweaks.ini
|
||||||
|
|
||||||
|
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||||
|
[Scripts]
|
||||||
|
;Uncomment the option to specify an additional directory for ini files used by scripts
|
||||||
|
;The game will search for ini files first relative to this directory and then relative to the root directory if not found
|
||||||
|
;The path length is limited to 61 characters
|
||||||
|
;IniConfigFolder=mods\iniConfigs
|
||||||
|
|
||||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||||
[Debugging]
|
[Debugging]
|
||||||
;Extra sfall configuration settings that can be used by modders
|
;Extra sfall configuration settings that can be used by modders
|
||||||
@@ -817,7 +849,7 @@ AllowUnsafeScripting=0
|
|||||||
SkipCompatModeCheck=0
|
SkipCompatModeCheck=0
|
||||||
|
|
||||||
;Fallout 2 Debug Patch
|
;Fallout 2 Debug Patch
|
||||||
;Set to 1 to send debug output to the screen, 2 to a debug.log file, or 3 to both the screen and debug.log
|
;Set to 1 to send debug output to the screen, 2 to a debug.log file, or 3 to both
|
||||||
;Does not require sfall debugging mode
|
;Does not require sfall debugging mode
|
||||||
;While you don't need to create an environment variable, you do still need to set the appropriate lines in fallout2.cfg
|
;While you don't need to create an environment variable, you do still need to set the appropriate lines in fallout2.cfg
|
||||||
;-------
|
;-------
|
||||||
@@ -855,7 +887,7 @@ AlwaysFindScripts=0
|
|||||||
Test_ForceFloats=0
|
Test_ForceFloats=0
|
||||||
|
|
||||||
;These options control what output is saved in the debug log (sfall-log.txt)
|
;These options control what output is saved in the debug log (sfall-log.txt)
|
||||||
;Prints messages duing sfall initialization
|
;Prints messages during sfall initialization
|
||||||
Init=1
|
Init=1
|
||||||
;Prints messages relating to hook scripts
|
;Prints messages relating to hook scripts
|
||||||
Hook=0
|
Hook=0
|
||||||
@@ -865,3 +897,19 @@ Script=0
|
|||||||
Criticals=1
|
Criticals=1
|
||||||
;Prints messages relating to engine fixes
|
;Prints messages relating to engine fixes
|
||||||
Fixes=1
|
Fixes=1
|
||||||
|
|
||||||
|
;Duplicates logs to a dedicated console window alongside the game window
|
||||||
|
;This option uses bit flags to control the types of messages to be shown
|
||||||
|
;All types other than sfall log (bit 1) require DebugMode to be enabled
|
||||||
|
;1 (bit 0) - debug output from the engine
|
||||||
|
;2 (bit 1) - sfall log
|
||||||
|
;4 (bit 2) - messages from debug_msg script function
|
||||||
|
;8 (bit 3) - messages from display_msg script function
|
||||||
|
ConsoleWindow=0b0000
|
||||||
|
|
||||||
|
;Console window position and size data. Do not modify
|
||||||
|
;Clear the data to reset the window position and size
|
||||||
|
ConsoleWindowData=
|
||||||
|
|
||||||
|
;Set the code page for the console window (Default is your system code page)
|
||||||
|
ConsoleCodePage=0
|
||||||
|
|||||||
@@ -0,0 +1,201 @@
|
|||||||
|
;Example Ammo INI for vanilla damage formula
|
||||||
|
|
||||||
|
; PID_EXPLOSIVE_ROCKET
|
||||||
|
[1]
|
||||||
|
pid=14
|
||||||
|
ac_adjust=0
|
||||||
|
dr_adjust=-25
|
||||||
|
dam_mult=1
|
||||||
|
dam_div=1
|
||||||
|
|
||||||
|
; PID_10MM_JHP
|
||||||
|
[2]
|
||||||
|
pid=29
|
||||||
|
ac_adjust=0
|
||||||
|
dr_adjust=25
|
||||||
|
dam_mult=2
|
||||||
|
dam_div=1
|
||||||
|
|
||||||
|
; PID_10MM_AP
|
||||||
|
[3]
|
||||||
|
pid=30
|
||||||
|
ac_adjust=0
|
||||||
|
dr_adjust=-25
|
||||||
|
dam_mult=1
|
||||||
|
dam_div=2
|
||||||
|
|
||||||
|
; PID_44_MAGNUM_JHP
|
||||||
|
[4]
|
||||||
|
pid=31
|
||||||
|
ac_adjust=0
|
||||||
|
dr_adjust=20
|
||||||
|
dam_mult=2
|
||||||
|
dam_div=1
|
||||||
|
|
||||||
|
; PID_FLAMETHROWER_FUEL
|
||||||
|
[5]
|
||||||
|
pid=32
|
||||||
|
ac_adjust=-20
|
||||||
|
dr_adjust=25
|
||||||
|
dam_mult=1
|
||||||
|
dam_div=1
|
||||||
|
|
||||||
|
; PID_14MM_AP
|
||||||
|
[6]
|
||||||
|
pid=33
|
||||||
|
ac_adjust=0
|
||||||
|
dr_adjust=-50
|
||||||
|
dam_mult=1
|
||||||
|
dam_div=2
|
||||||
|
|
||||||
|
; PID_223_FMJ
|
||||||
|
[7]
|
||||||
|
pid=34
|
||||||
|
ac_adjust=-20
|
||||||
|
dr_adjust=-20
|
||||||
|
dam_mult=1
|
||||||
|
dam_div=1
|
||||||
|
|
||||||
|
; PID_5MM_JHP
|
||||||
|
[8]
|
||||||
|
pid=35
|
||||||
|
ac_adjust=0
|
||||||
|
dr_adjust=35
|
||||||
|
dam_mult=2
|
||||||
|
dam_div=1
|
||||||
|
|
||||||
|
; PID_5MM_AP
|
||||||
|
[9]
|
||||||
|
pid=36
|
||||||
|
ac_adjust=0
|
||||||
|
dr_adjust=-35
|
||||||
|
dam_mult=1
|
||||||
|
dam_div=2
|
||||||
|
|
||||||
|
; PID_ROCKET_AP
|
||||||
|
[10]
|
||||||
|
pid=37
|
||||||
|
ac_adjust=-15
|
||||||
|
dr_adjust=-50
|
||||||
|
dam_mult=1
|
||||||
|
dam_div=1
|
||||||
|
|
||||||
|
; PID_SMALL_ENERGY_CELL
|
||||||
|
[11]
|
||||||
|
pid=38
|
||||||
|
ac_adjust=0
|
||||||
|
dr_adjust=0
|
||||||
|
dam_mult=1
|
||||||
|
dam_div=1
|
||||||
|
|
||||||
|
; PID_MICRO_FUSION_CELL
|
||||||
|
[12]
|
||||||
|
pid=39
|
||||||
|
ac_adjust=0
|
||||||
|
dr_adjust=0
|
||||||
|
dam_mult=1
|
||||||
|
dam_div=1
|
||||||
|
|
||||||
|
; PID_SHOTGUN_SHELLS
|
||||||
|
[13]
|
||||||
|
pid=95
|
||||||
|
ac_adjust=-10
|
||||||
|
dr_adjust=0
|
||||||
|
dam_mult=1
|
||||||
|
dam_div=1
|
||||||
|
|
||||||
|
; PID_44_FMJ_MAGNUM
|
||||||
|
[14]
|
||||||
|
pid=111
|
||||||
|
ac_adjust=0
|
||||||
|
dr_adjust=-20
|
||||||
|
dam_mult=1
|
||||||
|
dam_div=1
|
||||||
|
|
||||||
|
; PID_9MM_BALL
|
||||||
|
[15]
|
||||||
|
pid=121
|
||||||
|
ac_adjust=0
|
||||||
|
dr_adjust=0
|
||||||
|
dam_mult=1
|
||||||
|
dam_div=1
|
||||||
|
|
||||||
|
; PID_BBS
|
||||||
|
[16]
|
||||||
|
pid=163
|
||||||
|
ac_adjust=0
|
||||||
|
dr_adjust=0
|
||||||
|
dam_mult=1
|
||||||
|
dam_div=1
|
||||||
|
|
||||||
|
; PID_ROBO_ROCKET_AMMO
|
||||||
|
[17]
|
||||||
|
pid=274
|
||||||
|
ac_adjust=0
|
||||||
|
dr_adjust=-25
|
||||||
|
dam_mult=1
|
||||||
|
dam_div=1
|
||||||
|
|
||||||
|
; PID_45_CALIBER_AMMO
|
||||||
|
[18]
|
||||||
|
pid=357
|
||||||
|
ac_adjust=0
|
||||||
|
dr_adjust=0
|
||||||
|
dam_mult=1
|
||||||
|
dam_div=1
|
||||||
|
|
||||||
|
; PID_2MM_EC_AMMO
|
||||||
|
[19]
|
||||||
|
pid=358
|
||||||
|
ac_adjust=-30
|
||||||
|
dr_adjust=-20
|
||||||
|
dam_mult=3
|
||||||
|
dam_div=2
|
||||||
|
|
||||||
|
; PID_4_7MM_CASELESS
|
||||||
|
[20]
|
||||||
|
pid=359
|
||||||
|
ac_adjust=-5
|
||||||
|
dr_adjust=-10
|
||||||
|
dam_mult=3
|
||||||
|
dam_div=2
|
||||||
|
|
||||||
|
; PID_9MM_AMMO
|
||||||
|
[21]
|
||||||
|
pid=360
|
||||||
|
ac_adjust=0
|
||||||
|
dr_adjust=10
|
||||||
|
dam_mult=1
|
||||||
|
dam_div=2
|
||||||
|
|
||||||
|
; PID_HN_NEEDLER_CARTRIDGE
|
||||||
|
[22]
|
||||||
|
pid=361
|
||||||
|
ac_adjust=-10
|
||||||
|
dr_adjust=0
|
||||||
|
dam_mult=1
|
||||||
|
dam_div=1
|
||||||
|
|
||||||
|
; PID_HN_AP_NEEDLER_CARTRIDGE
|
||||||
|
[23]
|
||||||
|
pid=362
|
||||||
|
ac_adjust=-10
|
||||||
|
dr_adjust=0
|
||||||
|
dam_mult=2
|
||||||
|
dam_div=1
|
||||||
|
|
||||||
|
; PID_7_62MM_AMMO
|
||||||
|
[24]
|
||||||
|
pid=363
|
||||||
|
ac_adjust=-5
|
||||||
|
dr_adjust=-10
|
||||||
|
dam_mult=1
|
||||||
|
dam_div=1
|
||||||
|
|
||||||
|
; PID_FLAMETHROWER_FUEL_MK_II
|
||||||
|
[25]
|
||||||
|
pid=382
|
||||||
|
ac_adjust=-20
|
||||||
|
dr_adjust=0
|
||||||
|
dam_mult=1
|
||||||
|
dam_div=1
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
A basic example of how to use set_spray_settings function for script-based burst control
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "..\headers\define.h"
|
||||||
|
#include "..\headers\sfall\define_extra.h"
|
||||||
|
#include "..\headers\sfall\sfall.h"
|
||||||
|
|
||||||
|
procedure start;
|
||||||
|
procedure ammocost_handler;
|
||||||
|
|
||||||
|
procedure start begin
|
||||||
|
if game_loaded then begin
|
||||||
|
register_hook_proc(HOOK_AMMOCOST, ammocost_handler);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
procedure ammocost_handler begin
|
||||||
|
variable
|
||||||
|
weapon := get_sfall_arg,
|
||||||
|
bullets := get_sfall_arg,
|
||||||
|
cost := get_sfall_arg,
|
||||||
|
event := get_sfall_arg;
|
||||||
|
|
||||||
|
if (event == 2 and weapon > 0) then begin // when calculating number of burst rounds
|
||||||
|
if (obj_pid(weapon) == PID_ASSAULT_RIFLE) then begin
|
||||||
|
set_spray_settings(1, 1, 1, 1); // burst attack will not hit other targets
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -1,28 +1,69 @@
|
|||||||
/*
|
/*
|
||||||
Example algorithm of how the game engine calculates combat damage
|
This script reimplements the combat damage calculation of the original game.
|
||||||
|
Use this to implement your own damage formula!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "..\headers\define.h"
|
#include "../sfall/define_lite.h"
|
||||||
#include "..\headers\command.h"
|
#include "../sfall/define_extra.h"
|
||||||
#include "..\headers\sfall\sfall.h"
|
#include "../sfall/sfall.h"
|
||||||
#include "..\headers\sfall\define_extra.h"
|
|
||||||
|
#define DAMAGE_FORMULA_VANILLA (0)
|
||||||
|
#define DAMAGE_FORMULA_GLOVZ (1)
|
||||||
|
#define DAMAGE_FORMULA_GLOVZ2 (2)
|
||||||
|
#define DAMAGE_FORMULA_YAAM (5)
|
||||||
|
|
||||||
procedure start;
|
procedure start;
|
||||||
procedure compute_damage_F2;
|
procedure combatdamage_handler;
|
||||||
procedure item_w_damage_hook;
|
procedure itemdamage_handler;
|
||||||
|
procedure calc_damage_YAAM(variable weapon, variable rounds, variable armorDT, variable armorDR, variable bonusRangedDamage, variable multiplyDamage, variable difficulty);
|
||||||
procedure item_w_subtype(variable weapon, variable hit_mode);
|
procedure item_w_subtype(variable weapon, variable hit_mode);
|
||||||
procedure get_ammo_value(variable weapon, variable param);
|
procedure get_ammo_value(variable weapon, variable param);
|
||||||
|
|
||||||
variable item_w_damage;
|
variable
|
||||||
|
damage_formula,
|
||||||
|
item_damage_min,
|
||||||
|
item_damage_max,
|
||||||
|
item_damage_weapon,
|
||||||
|
item_damage_attacker;
|
||||||
|
|
||||||
procedure start begin
|
procedure start begin
|
||||||
if game_loaded then begin
|
if game_loaded then begin
|
||||||
register_hook_proc(HOOK_COMBATDAMAGE, compute_damage_F2);
|
damage_formula := get_ini_setting("ddraw.ini|Misc|DamageFormula");
|
||||||
register_hook_proc(HOOK_ITEMDAMAGE, item_w_damage_hook);
|
register_hook_proc(HOOK_COMBATDAMAGE, combatdamage_handler);
|
||||||
|
register_hook_proc(HOOK_ITEMDAMAGE, itemdamage_handler);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
procedure compute_damage_F2 begin
|
/*
|
||||||
|
HOOK_COMBATDAMAGE
|
||||||
|
|
||||||
|
Runs when:
|
||||||
|
1) Game calculates how much damage each target will get. This includes primary target as well as all extras (explosions and bursts). This happens BEFORE the actual attack animation.
|
||||||
|
2) AI decides whether it is safe to use area attack (burst, grenades), if he might hit friendlies.
|
||||||
|
|
||||||
|
Does not run for misses, or non-combat damage like dynamite explosions.
|
||||||
|
|
||||||
|
Critter arg0 - The target
|
||||||
|
Critter arg1 - The attacker
|
||||||
|
int arg2 - The amount of damage to the target
|
||||||
|
int arg3 - The amount of damage to the attacker
|
||||||
|
int arg4 - The special effect flags for the target (use bwand DAM_* to check specific flags)
|
||||||
|
int arg5 - The special effect flags for the attacker (use bwand DAM_* to check specific flags)
|
||||||
|
Item arg6 - The weapon used in the attack
|
||||||
|
int arg7 - The bodypart that was struck
|
||||||
|
int arg8 - Damage Multiplier (this is divided by 2, so a value of 3 does 1.5x damage, and 8 does 4x damage. Usually it's 2; for critical hits, the value is taken from the critical table; with Silent Death perk and the corresponding attack conditions, the value will be doubled)
|
||||||
|
int arg9 - Number of bullets actually hit the target (1 for melee attacks)
|
||||||
|
int arg10 - The amount of knockback to the target
|
||||||
|
int arg11 - Attack Type (see ATKTYPE_* constants)
|
||||||
|
mixed arg12 - computed attack data (see C_ATTACK_* for offsets and use get/set_object_data functions to get/set the data)
|
||||||
|
|
||||||
|
int ret0 - The damage to the target
|
||||||
|
int ret1 - The damage to the attacker
|
||||||
|
int ret2 - The special effect flags for the target
|
||||||
|
int ret3 - The special effect flags for the attacker
|
||||||
|
int ret4 - The amount of knockback to the target
|
||||||
|
*/
|
||||||
|
procedure combatdamage_handler begin
|
||||||
variable dmg_type, weapon_perk, dmg_thresh, dmg_resist, weapon_subtype, bonus_ranged, difficulty, i, dmg_mult, dmg_div, damage;
|
variable dmg_type, weapon_perk, dmg_thresh, dmg_resist, weapon_subtype, bonus_ranged, difficulty, i, dmg_mult, dmg_div, damage;
|
||||||
variable target, flags, knockback, amount;
|
variable target, flags, knockback, amount;
|
||||||
|
|
||||||
@@ -40,6 +81,11 @@ procedure compute_damage_F2 begin
|
|||||||
amountKnockback := get_sfall_arg,
|
amountKnockback := get_sfall_arg,
|
||||||
hit_mode := get_sfall_arg;
|
hit_mode := get_sfall_arg;
|
||||||
|
|
||||||
|
if (ctdSource != item_damage_attacker or weapon != item_damage_weapon) then begin
|
||||||
|
debug_msg("! ERROR ! compute_damage: Expected attacker or weapon differs!");
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
|
||||||
if (flagsSource bwand DAM_HIT) then begin
|
if (flagsSource bwand DAM_HIT) then begin
|
||||||
target := ctdTarget;
|
target := ctdTarget;
|
||||||
flags := flagsTarget;
|
flags := flagsTarget;
|
||||||
@@ -50,7 +96,6 @@ procedure compute_damage_F2 begin
|
|||||||
knockback := 0;
|
knockback := 0;
|
||||||
end
|
end
|
||||||
|
|
||||||
//amount := 0;
|
|
||||||
if target and (obj_type(target) == OBJ_TYPE_CRITTER) then begin
|
if target and (obj_type(target) == OBJ_TYPE_CRITTER) then begin
|
||||||
if weapon then begin
|
if weapon then begin
|
||||||
dmg_type := weapon_dmg_type(weapon);
|
dmg_type := weapon_dmg_type(weapon);
|
||||||
@@ -77,7 +122,7 @@ procedure compute_damage_F2 begin
|
|||||||
end
|
end
|
||||||
|
|
||||||
weapon_subtype := item_w_subtype(weapon, hit_mode); // item_w_subtype_
|
weapon_subtype := item_w_subtype(weapon, hit_mode); // item_w_subtype_
|
||||||
if (ctdSource != dude_obj) or (weapon_subtype != WEAPON_TYPE_GUNS) then
|
if (ctdSource != dude_obj) or (weapon_subtype != WEAPON_TYPE_RANGED) then
|
||||||
bonus_ranged := 0;
|
bonus_ranged := 0;
|
||||||
else
|
else
|
||||||
bonus_ranged := has_trait(TRAIT_PERK, ctdSource, PERK_bonus_ranged_damage) * 2;
|
bonus_ranged := has_trait(TRAIT_PERK, ctdSource, PERK_bonus_ranged_damage) * 2;
|
||||||
@@ -90,27 +135,31 @@ procedure compute_damage_F2 begin
|
|||||||
difficulty := 125;
|
difficulty := 125;
|
||||||
end
|
end
|
||||||
|
|
||||||
// F2 default start
|
if (damage_formula == DAMAGE_FORMULA_YAAM) then begin
|
||||||
// Damage = (1 - (DR_armor + DR_ammo_adjust) * (((raw_damage * (dmg_mult * damageMultiplier)) / dmg_div) - dmg_thresh)
|
amount := calc_damage_YAAM(weapon, rounds, dmg_thresh, dmg_resist, bonus_ranged, damageMultiplier, difficulty);
|
||||||
dmg_resist += get_ammo_value(weapon, PROTO_AM_DR_MOD); // item_w_dr_adjust_ (DR Adjust %)
|
end else begin
|
||||||
if (dmg_resist < 100) then begin
|
// F2 default start
|
||||||
if (dmg_resist < 0) then dmg_resist := 0;
|
// Damage = (1 - (DR_armor + DR_ammo_adjust) * (((raw_damage * (dmg_mult * damageMultiplier)) / dmg_div) - dmg_thresh)
|
||||||
|
dmg_resist += get_ammo_value(weapon, PROTO_AM_DR_MOD); // item_w_dr_adjust_ (DR Adjust %)
|
||||||
|
if (dmg_resist < 100) then begin
|
||||||
|
if (dmg_resist < 0) then dmg_resist := 0;
|
||||||
|
|
||||||
dmg_mult := damageMultiplier * get_ammo_value(weapon, PROTO_AM_DMG_MULT); // item_w_dam_mult_ (Dmg mod A)
|
dmg_mult := damageMultiplier * get_ammo_value(weapon, PROTO_AM_DMG_MULT); // item_w_dam_mult_ (Dmg mod A)
|
||||||
dmg_div := get_ammo_value(weapon, PROTO_AM_DMG_DIV); // item_w_dam_div_ (Dmg mod B)
|
dmg_div := get_ammo_value(weapon, PROTO_AM_DMG_DIV); // item_w_dam_div_ (Dmg mod B)
|
||||||
|
|
||||||
for (i := 1; i <= rounds; i++) begin
|
for (i := 1; i <= rounds; i++) begin
|
||||||
damage := (item_w_damage + bonus_ranged) * dmg_mult; // item_w_damage_ (raw_damage)
|
damage := (random(item_damage_min, item_damage_max) + bonus_ranged) * dmg_mult; // item_w_damage_ (raw_damage)
|
||||||
if dmg_div then damage /= dmg_div;
|
if dmg_div then damage /= dmg_div;
|
||||||
|
|
||||||
damage := (((damage / 2) * difficulty) / 100) - dmg_thresh;
|
damage := (((damage / 2) * difficulty) / 100) - dmg_thresh;
|
||||||
if (damage > 0) then begin
|
if (damage > 0) then begin
|
||||||
damage := damage - ((damage * dmg_resist) / 100); // reduce damage by the percentage of DR_armor + DR_Ammo
|
damage := damage - ((damage * dmg_resist) / 100); // reduce damage by the percentage of DR_armor + DR_Ammo
|
||||||
if (damage > 0) then amount += damage;
|
if (damage > 0) then amount += damage;
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
// F2 default end
|
||||||
end
|
end
|
||||||
// F2 default end
|
|
||||||
|
|
||||||
if (ctdSource == dude_obj) then begin
|
if (ctdSource == dude_obj) then begin
|
||||||
if has_trait(TRAIT_PERK, ctdSource, PERK_living_anatomy_perk) and (critter_kill_type(ctdTarget) != KILL_TYPE_robot_kills)
|
if has_trait(TRAIT_PERK, ctdSource, PERK_living_anatomy_perk) and (critter_kill_type(ctdTarget) != KILL_TYPE_robot_kills)
|
||||||
@@ -140,11 +189,11 @@ procedure compute_damage_F2 begin
|
|||||||
end
|
end
|
||||||
|
|
||||||
if (flagsSource bwand DAM_HIT) then begin
|
if (flagsSource bwand DAM_HIT) then begin
|
||||||
display_msg("amountTarget = " + amountTarget+ ", amount = " + amount);
|
display_msg("COMBATDAMAGE amountTarget = " + amountTarget+ ", amount = " + amount);
|
||||||
amountTarget := amount;
|
amountTarget := amount;
|
||||||
flagsTarget := flags;
|
flagsTarget := flags;
|
||||||
end else begin
|
end else begin
|
||||||
display_msg("amountSource = " + amountSource+ ", amount = " + amount);
|
display_msg("COMBATDAMAGE amountSource = " + amountSource+ ", amount = " + amount);
|
||||||
amountSource := amount;
|
amountSource := amount;
|
||||||
flagsSource := flags;
|
flagsSource := flags;
|
||||||
end
|
end
|
||||||
@@ -154,40 +203,118 @@ procedure compute_damage_F2 begin
|
|||||||
set_sfall_return(flagsTarget);
|
set_sfall_return(flagsTarget);
|
||||||
set_sfall_return(flagsSource);
|
set_sfall_return(flagsSource);
|
||||||
set_sfall_return(amountKnockback);
|
set_sfall_return(amountKnockback);
|
||||||
|
|
||||||
|
set_sfall_arg(2, amountTarget);
|
||||||
|
set_sfall_arg(3, amountSource);
|
||||||
|
set_sfall_arg(4, flagsTarget);
|
||||||
|
set_sfall_arg(5, flagsSource);
|
||||||
|
set_sfall_arg(10, amountKnockback);
|
||||||
end
|
end
|
||||||
|
|
||||||
procedure item_w_damage_hook begin
|
procedure calc_damage_YAAM(variable weapon, variable rounds, variable armorDT, variable armorDR, variable bonusRangedDamage, variable multiplyDamage, variable difficulty) begin
|
||||||
variable
|
variable accumulatedDamage, ammoDiv, ammoMult, ammoDT, calcDT, _calcDT, calcDR, i, rawDamage, resistedDamage;
|
||||||
item_w_damage_min := get_sfall_arg,
|
if (rounds <= 0) then begin
|
||||||
item_w_damage_max := get_sfall_arg;
|
return 0;
|
||||||
//weapon := get_sfall_arg,
|
end
|
||||||
//source := get_sfall_arg,
|
|
||||||
|
ammoDiv := get_ammo_value(weapon, PROTO_AM_DMG_DIV);
|
||||||
|
ammoMult := get_ammo_value(weapon, PROTO_AM_DMG_MULT);
|
||||||
|
|
||||||
|
// Damage Multipler = Critical Multipler * Ammo Dividend
|
||||||
|
multiplyDamage *= ammoMult;
|
||||||
|
|
||||||
|
// Retrieve ammo DT (well, it's really Retrieve ammo DR, but since we're treating ammo DR as ammo DT...)
|
||||||
|
ammoDT := get_ammo_value(weapon, PROTO_AM_DR_MOD);
|
||||||
|
|
||||||
|
calcDT := armorDT - ammoDT;
|
||||||
|
_calcDT := calcDT;
|
||||||
|
|
||||||
|
if (calcDT >= 0) then begin
|
||||||
|
_calcDT := 0;
|
||||||
|
end else begin
|
||||||
|
// note that this should be a negative value
|
||||||
|
_calcDT *= 10;
|
||||||
|
calcDT := 0;
|
||||||
|
end
|
||||||
|
|
||||||
|
// DR = armor DR + DT (note that DT should be less than or equal to zero)
|
||||||
|
calcDR = armorDR + _calcDT;
|
||||||
|
if (calcDR < 0) then begin
|
||||||
|
calcDR = 0;
|
||||||
|
end else if (calcDR >= 100) then begin
|
||||||
|
return 0;
|
||||||
|
end
|
||||||
|
|
||||||
|
display_msg("YAAM: AmmoDT=" + ammoDT + ", DT=" + calcDT + "/" + armorDT + ", DR=" + calcDR + "/" + armorDR);
|
||||||
|
// Start of damage calculation loop
|
||||||
|
for (i := 0; i < rounds; i++) begin
|
||||||
|
rawDamage = random(item_damage_min, item_damage_max);
|
||||||
|
rawDamage += bonusRangedDamage;
|
||||||
|
|
||||||
|
rawDamage -= calcDT;
|
||||||
|
if (rawDamage <= 0) then
|
||||||
|
continue;
|
||||||
|
|
||||||
|
rawDamage *= multiplyDamage;
|
||||||
|
if (ammoDiv != 0) then begin
|
||||||
|
rawDamage /= ammoDiv;
|
||||||
|
end
|
||||||
|
rawDamage /= 2; // related to critical hit damage multiplier bonus
|
||||||
|
rawDamage *= difficulty; // combat difficulty setting (75 if wimpy, 100 if normal or if attacker is player, 125 if rough)
|
||||||
|
rawDamage /= 100;
|
||||||
|
|
||||||
|
resistedDamage = calcDR * rawDamage;
|
||||||
|
resistedDamage /= 100;
|
||||||
|
rawDamage -= resistedDamage;
|
||||||
|
|
||||||
|
if (rawDamage > 0) then begin
|
||||||
|
display_msg("YAAM: Bullet " + i + " dmg=" + rawDamage);
|
||||||
|
accumulatedDamage += rawDamage;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return accumulatedDamage;
|
||||||
|
end
|
||||||
|
|
||||||
|
/*
|
||||||
|
HOOK_ITEMDAMAGE
|
||||||
|
|
||||||
|
Runs when retrieving the damage rating of the player's used weapon. (Which may be their fists.)
|
||||||
|
|
||||||
|
int arg0 - The default min damage
|
||||||
|
int arg1 - The default max damage
|
||||||
|
Item arg2 - The weapon used (0 if unarmed)
|
||||||
|
Critter arg3 - The critter doing the attacking
|
||||||
|
int arg4 - The type of attack
|
||||||
|
int arg5 - non-zero if this is an attack using a melee weapon
|
||||||
|
|
||||||
|
int ret0 - Either the damage to be used, if ret1 isn't given, or the new minimum damage if it is
|
||||||
|
int ret1 - The new maximum damage
|
||||||
|
*/
|
||||||
|
procedure itemdamage_handler begin
|
||||||
|
item_damage_min := get_sfall_arg;
|
||||||
|
item_damage_max := get_sfall_arg;
|
||||||
|
item_damage_weapon := get_sfall_arg;
|
||||||
|
item_damage_attacker := get_sfall_arg;
|
||||||
//hit_mode := get_sfall_arg,
|
//hit_mode := get_sfall_arg,
|
||||||
//isMelee := get_sfall_arg;
|
//isMelee := get_sfall_arg;
|
||||||
|
|
||||||
item_w_damage := (item_w_damage_min + (item_w_damage_max - item_w_damage_min) / 2);
|
display_msg("itemdamage: " + item_damage_min + "-" + item_damage_max);
|
||||||
display_msg("item_w_damage_ = " + item_w_damage);
|
|
||||||
|
|
||||||
set_sfall_return(item_w_damage);
|
|
||||||
end
|
end
|
||||||
|
|
||||||
procedure item_w_subtype(variable weapon, variable hit_mode) begin
|
procedure item_w_subtype(variable weapon, variable hit_mode) begin
|
||||||
variable attack_mode, type := WEAPON_TYPE_UNARMED;
|
variable attack_mode, type := WEAPON_TYPE_UNARMED;
|
||||||
|
|
||||||
if weapon and (hit_mode <= ATKTYPE_RWEP2) then begin
|
if weapon and (hit_mode <= ATKTYPE_RWEP2) then begin
|
||||||
attack_mode := (get_proto_data(obj_pid(weapon), PROTO_IT_FLAGS));
|
attack_mode := weapon_attack_mode(obj_pid(weapon), hit_mode);
|
||||||
|
|
||||||
if (hit_mode == ATKTYPE_LWEP2) or (hit_mode == ATKTYPE_RWEP2) then
|
if (attack_mode >= ATTACK_MODE_SINGLE) then
|
||||||
attack_mode := (attack_mode bwand 0xF0) / 16; // shift 4 bits to the right
|
type := WEAPON_TYPE_RANGED;
|
||||||
else
|
else if (attack_mode == ATTACK_MODE_THROW) then
|
||||||
attack_mode := (attack_mode bwand 0x0F);
|
|
||||||
|
|
||||||
if (attack_mode > ATKMODE_PRI_THROW) then
|
|
||||||
type := WEAPON_TYPE_GUNS;
|
|
||||||
else if (attack_mode == ATKMODE_PRI_THROW) then
|
|
||||||
type := WEAPON_TYPE_THROWN;
|
type := WEAPON_TYPE_THROWN;
|
||||||
else if (attack_mode > ATKMODE_PRI_KICK) then
|
else if (attack_mode >= ATTACK_MODE_SWING) then
|
||||||
type := WEAPON_TYPE_MELEE;
|
type := WEAPON_TYPE_MELEE;
|
||||||
|
else if (attack_mode == ATTACK_MODE_NONE) then
|
||||||
|
type := WEAPON_TYPE_NONE;
|
||||||
end
|
end
|
||||||
|
|
||||||
return type;
|
return type;
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
Example implementation of the algorithm of how the game engine sets the explosive timer.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "..\..\scripting_docs\headers\sfall.h"
|
||||||
|
#include "..\..\scripting_docs\headers\define_lite.h"
|
||||||
|
|
||||||
|
// from CONDTION.H
|
||||||
|
#define ROLL_CRITICAL_FAILURE (0)
|
||||||
|
#define ROLL_FAILURE (1)
|
||||||
|
#define ROLL_SUCCESS (2)
|
||||||
|
#define ROLL_CRITICAL_SUCCESS (3)
|
||||||
|
|
||||||
|
procedure start;
|
||||||
|
|
||||||
|
procedure start begin
|
||||||
|
if game_loaded then begin
|
||||||
|
register_hook(HOOK_EXPLOSIVETIMER);
|
||||||
|
end else begin
|
||||||
|
variable
|
||||||
|
time := get_sfall_arg,
|
||||||
|
result := ROLL_CRITICAL_FAILURE;
|
||||||
|
|
||||||
|
if has_trait(TRAIT_PERK, dude_obj, PERK_demolition_expert_perk) then
|
||||||
|
result := ROLL_SUCCESS;
|
||||||
|
else begin
|
||||||
|
result := roll_vs_skill(dude_obj, SKILL_TRAPS, 0);
|
||||||
|
end
|
||||||
|
|
||||||
|
if (result) then begin
|
||||||
|
if (result == ROLL_FAILURE) then
|
||||||
|
time /= 2;
|
||||||
|
else begin // success or critical success
|
||||||
|
result := ROLL_SUCCESS;
|
||||||
|
end
|
||||||
|
end else begin // critical failure
|
||||||
|
time := 0;
|
||||||
|
result := ROLL_FAILURE;
|
||||||
|
end
|
||||||
|
|
||||||
|
set_sfall_return(time);
|
||||||
|
set_sfall_return(result); // failure/success
|
||||||
|
end
|
||||||
|
end
|
||||||
Binary file not shown.
@@ -1,11 +1,13 @@
|
|||||||
/**
|
/**
|
||||||
|
|
||||||
Item Highlight mod (Lite version)
|
Item Highlighting mod (Lite version)
|
||||||
|
|
||||||
A cut-down version of the mod included in sfall 4.x, offers a bit more features than the built-in function.
|
A cut-down version of the mod included in sfall 4.x, offering more features than the built-in function.
|
||||||
Features:
|
Features:
|
||||||
- highlighting items, containers (optional) and lootable corpses (optional) on the ground
|
- highlights items, containers (optional) and lootable corpses (optional) on the ground
|
||||||
|
- highlights critters using the same rules as combat mode highlighting (optional)
|
||||||
- configurable hotkey is used to trigger highlight
|
- configurable hotkey is used to trigger highlight
|
||||||
|
- hotkey can be pressed and held to continuously update highlighted objects based on current position
|
||||||
- only objects in direct line-of-sight of player are highlighted (optional)
|
- only objects in direct line-of-sight of player are highlighted (optional)
|
||||||
- motion scanner is required to enable highlight (optional)
|
- motion scanner is required to enable highlight (optional)
|
||||||
- motion scanner charges are decreased on each use (optional)
|
- motion scanner charges are decreased on each use (optional)
|
||||||
@@ -15,7 +17,7 @@
|
|||||||
NOTE: this script requires compiler from sfall modderspack with -s option
|
NOTE: this script requires compiler from sfall modderspack with -s option
|
||||||
(short circuit evaluation)
|
(short circuit evaluation)
|
||||||
|
|
||||||
version 1.1
|
version 1.2
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
||||||
@@ -24,6 +26,7 @@
|
|||||||
|
|
||||||
#define CRITTER_IS_DEAD (1)
|
#define CRITTER_IS_DEAD (1)
|
||||||
#define PID_MOTION_SENSOR (59)
|
#define PID_MOTION_SENSOR (59)
|
||||||
|
#define REPEAT_FRAMES (10)
|
||||||
#define NO_HIGHLIGHT(obj) (get_flags(obj) bwand FLAG_NOHIGHLIGHT)
|
#define NO_HIGHLIGHT(obj) (get_flags(obj) bwand FLAG_NOHIGHLIGHT)
|
||||||
#define NO_STEAL(obj) (get_proto_data(obj_pid(obj), PROTO_CR_FLAGS) bwand CFLG_NOSTEAL)
|
#define NO_STEAL(obj) (get_proto_data(obj_pid(obj), PROTO_CR_FLAGS) bwand CFLG_NOSTEAL)
|
||||||
|
|
||||||
@@ -32,36 +35,70 @@ variable highlightKey;
|
|||||||
variable isHighlight;
|
variable isHighlight;
|
||||||
variable alsoContainer;
|
variable alsoContainer;
|
||||||
variable alsoCorpse;
|
variable alsoCorpse;
|
||||||
|
variable alsoCritter;
|
||||||
variable checkLOS;
|
variable checkLOS;
|
||||||
variable outlineColor;
|
variable outlineColor;
|
||||||
variable motionScanner;
|
variable motionScanner;
|
||||||
variable highlightFailMsg1;
|
variable highlightFailMsg1;
|
||||||
variable highlightFailMsg2;
|
variable highlightFailMsg2;
|
||||||
|
|
||||||
procedure ToggleHighlightObject(variable obj, variable enable) begin
|
procedure DudeCanSee(variable obj) begin
|
||||||
if obj and (not enable or not checkLOS or not obj_blocking_line(dude_obj, tile_num(obj), BLOCKING_TYPE_SHOOT)) then begin
|
variable block := obj_blocking_line(dude_obj, tile_num(obj), BLOCKING_TYPE_SHOOT);
|
||||||
if (alsoContainer and obj_item_subtype(obj) == item_type_container) or (not NO_HIGHLIGHT(obj)) then begin
|
return not block or block == obj;
|
||||||
if (enable) then set_outline(obj, outlineColor);
|
end
|
||||||
else set_outline(obj, 0);
|
|
||||||
|
procedure DudeCanHear(variable obj) begin
|
||||||
|
variable hearDist := dude_perception * 5;
|
||||||
|
if (get_flags(obj) bwand FLAG_TRANSGLASS) then
|
||||||
|
hearDist /= 2;
|
||||||
|
|
||||||
|
return tile_distance_objs(dude_obj, obj) <= hearDist;
|
||||||
|
end
|
||||||
|
|
||||||
|
procedure GetOutlineColor(variable obj, variable isCritter) begin
|
||||||
|
if isCritter then begin
|
||||||
|
if get_team(obj) == get_team(dude_obj) then return OUTLINE_GREEN_GLOW;
|
||||||
|
if not DudeCanSee(obj) then begin
|
||||||
|
if (DudeCanHear(obj)) then return OUTLINE_DARK_YELLOW;
|
||||||
|
return 0;
|
||||||
end
|
end
|
||||||
|
return OUTLINE_RED_GLOW;
|
||||||
end
|
end
|
||||||
|
if checkLOS and not DudeCanSee(obj) then
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return outlineColor;
|
||||||
|
end
|
||||||
|
|
||||||
|
procedure ToggleHighlightObject(variable obj, variable enable, variable isCritter) begin
|
||||||
|
if (not alsoContainer or obj_item_subtype(obj) != item_type_container) and NO_HIGHLIGHT(obj) then return;
|
||||||
|
|
||||||
|
set_outline(obj, GetOutlineColor(obj, isCritter) if enable else 0);
|
||||||
end
|
end
|
||||||
|
|
||||||
procedure ToggleHighlight(variable enable) begin
|
procedure ToggleHighlight(variable enable) begin
|
||||||
variable obj;
|
variable obj, isCorpse;
|
||||||
foreach obj in list_as_array(LIST_GROUNDITEMS) begin
|
foreach obj in list_as_array(LIST_GROUNDITEMS) begin
|
||||||
if obj != outlined_object then begin
|
if obj and obj != outlined_object then begin
|
||||||
call ToggleHighlightObject(obj, enable);
|
call ToggleHighlightObject(obj, enable, false);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if (alsoCorpse) then begin
|
if (alsoCorpse or alsoCritter) then begin
|
||||||
foreach obj in list_as_array(LIST_CRITTERS) begin
|
foreach obj in list_as_array(LIST_CRITTERS) begin
|
||||||
if critter_state(obj) == CRITTER_IS_DEAD and not NO_STEAL(obj) then begin
|
if obj and obj != dude_obj then begin
|
||||||
call ToggleHighlightObject(obj, enable);
|
isCorpse := critter_state(obj) == CRITTER_IS_DEAD;
|
||||||
|
if (alsoCritter and not isCorpse) or (isCorpse and not NO_STEAL(obj)) then begin
|
||||||
|
call ToggleHighlightObject(obj, enable, not isCorpse);
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
tile_refresh_display;
|
tile_refresh_display;
|
||||||
|
if (checkLOS or alsoCritter) and enable != isHighlight then begin
|
||||||
|
set_global_script_repeat(REPEAT_FRAMES if enable else 0);
|
||||||
|
end
|
||||||
|
|
||||||
|
isHighlight := enable;
|
||||||
end
|
end
|
||||||
|
|
||||||
procedure KeyPressHandler begin
|
procedure KeyPressHandler begin
|
||||||
@@ -71,7 +108,7 @@ procedure KeyPressHandler begin
|
|||||||
|
|
||||||
if scanCode == highlightKey and not(get_game_mode bwand (INTFACELOOT bwor BARTER)) then begin
|
if scanCode == highlightKey and not(get_game_mode bwand (INTFACELOOT bwor BARTER)) then begin
|
||||||
if pressed then begin
|
if pressed then begin
|
||||||
isHighlight := true;
|
set_global_script_repeat(REPEAT_FRAMES);
|
||||||
if motionScanner then begin
|
if motionScanner then begin
|
||||||
scanner := obj_carrying_pid_obj(dude_obj, PID_MOTION_SENSOR);
|
scanner := obj_carrying_pid_obj(dude_obj, PID_MOTION_SENSOR);
|
||||||
if scanner then begin
|
if scanner then begin
|
||||||
@@ -94,16 +131,21 @@ procedure KeyPressHandler begin
|
|||||||
call ToggleHighlight(true);
|
call ToggleHighlight(true);
|
||||||
end
|
end
|
||||||
end else begin
|
end else begin
|
||||||
isHighlight := false;
|
|
||||||
call ToggleHighlight(false);
|
call ToggleHighlight(false);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
// visual glitch fix - for 3.8.29+
|
// visual glitch fix, turn off highlight when entering combat - for 3.8.40+
|
||||||
|
procedure CombatTurnHandler begin
|
||||||
|
if isHighlight then begin
|
||||||
|
call ToggleHighlight(false);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
// visual glitch fix, turn off highlight when opening loot/barter screens - for 3.8.29+
|
||||||
procedure GameModeChangeHandler begin
|
procedure GameModeChangeHandler begin
|
||||||
if isHighlight and (get_game_mode bwand (INTFACELOOT bwor BARTER)) then begin
|
if isHighlight and (get_game_mode bwand (INTFACELOOT bwor BARTER)) then begin
|
||||||
isHighlight := false;
|
|
||||||
call ToggleHighlight(false);
|
call ToggleHighlight(false);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -114,12 +156,15 @@ procedure InventoryMoveHandler begin
|
|||||||
end
|
end
|
||||||
|
|
||||||
procedure start begin
|
procedure start begin
|
||||||
if game_loaded and (sfall_ver_major < 4 and sfall_ver_build >= 12) then begin
|
if game_loaded then begin
|
||||||
|
if (sfall_ver_major >= 4 or sfall_ver_build < 12) then return;
|
||||||
|
|
||||||
call InitConfigs;
|
call InitConfigs;
|
||||||
|
|
||||||
highlightKey := GetConfig(configSection, "Key", 0);
|
highlightKey := GetConfig(configSection, "Key", 0);
|
||||||
alsoContainer := GetConfig(configSection, "Containers", 0);
|
alsoContainer := GetConfig(configSection, "Containers", 0);
|
||||||
alsoCorpse := GetConfig(configSection, "Corpses", 0);
|
alsoCorpse := GetConfig(configSection, "Corpses", 0);
|
||||||
|
alsoCritter := GetConfig(configSection, "Critters", 0);
|
||||||
checkLOS := GetConfig(configSection, "CheckLOS", 0);
|
checkLOS := GetConfig(configSection, "CheckLOS", 0);
|
||||||
outlineColor := GetConfig(configSection, "OutlineColor", 16);
|
outlineColor := GetConfig(configSection, "OutlineColor", 16);
|
||||||
if (outlineColor < 1) then outlineColor := 64;
|
if (outlineColor < 1) then outlineColor := 64;
|
||||||
@@ -129,7 +174,13 @@ procedure start begin
|
|||||||
highlightFailMsg2 := Translate("HighlightFail2", "Your motion sensor is out of charge.");
|
highlightFailMsg2 := Translate("HighlightFail2", "Your motion sensor is out of charge.");
|
||||||
|
|
||||||
register_hook_proc(HOOK_KEYPRESS, KeyPressHandler);
|
register_hook_proc(HOOK_KEYPRESS, KeyPressHandler);
|
||||||
|
register_hook_proc(HOOK_COMBATTURN, CombatTurnHandler);
|
||||||
register_hook_proc(HOOK_GAMEMODECHANGE, GameModeChangeHandler);
|
register_hook_proc(HOOK_GAMEMODECHANGE, GameModeChangeHandler);
|
||||||
register_hook_proc(HOOK_INVENTORYMOVE, InventoryMoveHandler);
|
register_hook_proc(HOOK_INVENTORYMOVE, InventoryMoveHandler);
|
||||||
|
set_global_script_type(1);
|
||||||
|
end else begin
|
||||||
|
if isHighlight and not(get_game_mode bwand (INTFACELOOT bwor BARTER)) then begin
|
||||||
|
call ToggleHighlight(true);
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -12,51 +12,52 @@
|
|||||||
#include "..\scripting\headers\lib.inven.h"
|
#include "..\scripting\headers\lib.inven.h"
|
||||||
*/
|
*/
|
||||||
|
|
||||||
variable ini := "sfall-mods.ini";
|
variable ini := "mods\\sfall-mods.ini";
|
||||||
variable translationIni;
|
variable translationIni;
|
||||||
|
|
||||||
// Gets the integer value from the specified ini
|
// Gets the integer value from the specified ini
|
||||||
procedure GetIniConfig(variable section, variable key, variable def, variable inifile) begin
|
procedure GetIniConfig(variable section, variable key, variable def, variable inifile) begin
|
||||||
variable val := get_ini_setting(inifile + "|" + section + "|" + key);
|
variable val := get_ini_setting(inifile + "|" + section + "|" + key);
|
||||||
if val == -1 then val := def;
|
if (val == -1) then return def;
|
||||||
return val;
|
return val;
|
||||||
end
|
end
|
||||||
|
|
||||||
// Gets the string value from the specified ini
|
// Gets the string value from the specified ini
|
||||||
procedure GetIniConfigStr(variable section, variable key, variable def, variable inifile) begin
|
procedure GetIniConfigStr(variable section, variable key, variable def, variable inifile) begin
|
||||||
variable val := get_ini_string(inifile + "|" + section + "|" + key);
|
variable val := get_ini_string(inifile + "|" + section + "|" + key);
|
||||||
if val == -1 orElse val == "" then val := def;
|
if (val == -1 orElse val == "") then return def;
|
||||||
return val;
|
return val;
|
||||||
end
|
end
|
||||||
|
|
||||||
// Gets the integer value from sfall-mods.ini
|
// Gets the integer value from sfall-mods.ini
|
||||||
procedure GetConfig(variable section, variable key, variable def) begin
|
procedure GetConfig(variable section, variable key, variable def) begin
|
||||||
variable val := get_ini_setting(ini + "|" + section + "|" + key);
|
variable val := get_ini_setting(ini + "|" + section + "|" + key);
|
||||||
if val == -1 then val := def;
|
if (val == -1) then return def;
|
||||||
return val;
|
return val;
|
||||||
end
|
end
|
||||||
|
|
||||||
// Gets the string value from sfall-mods.ini
|
// Gets the string value from sfall-mods.ini
|
||||||
procedure GetConfigStr(variable section, variable key, variable def) begin
|
procedure GetConfigStr(variable section, variable key, variable def) begin
|
||||||
variable val := get_ini_string(ini + "|" + section + "|" + key);
|
variable val := get_ini_string(ini + "|" + section + "|" + key);
|
||||||
if val == -1 orElse val == "" then val := def;
|
if (val == -1 orElse val == "") then return def;
|
||||||
return val;
|
return val;
|
||||||
end
|
end
|
||||||
|
|
||||||
// Gets the value from sfall-mods.ini as a temp array of strings
|
// Gets the value from sfall-mods.ini as a temp array of strings
|
||||||
procedure GetConfigList(variable section, variable key) begin
|
procedure GetConfigList(variable section, variable key) begin
|
||||||
variable val := get_ini_string(ini + "|" + section + "|" + key);
|
variable val := get_ini_string(ini + "|" + section + "|" + key);
|
||||||
if val == -1 orElse val == "" then return [];
|
if (val == -1 orElse val == "") then return [];
|
||||||
|
|
||||||
return string_split(val, ",");
|
return string_split(val, ",");
|
||||||
end
|
end
|
||||||
|
|
||||||
// Gets the value from sfall-mods.ini as a temp array of ints
|
// Gets the value from sfall-mods.ini as a temp array of ints
|
||||||
procedure GetConfigListInt(variable section, variable key) begin
|
procedure GetConfigListInt(variable section, variable key) begin
|
||||||
variable arr, i, item;
|
variable arr, len, i, item;
|
||||||
|
|
||||||
arr := GetConfigList(section, key);
|
arr := GetConfigList(section, key);
|
||||||
for (i := 0; i < len_array(arr); i++) begin
|
len = len_array(arr);
|
||||||
|
for (i := 0; i < len; i++) begin
|
||||||
arr[i] := atoi(arr[i]);
|
arr[i] := atoi(arr[i]);
|
||||||
end
|
end
|
||||||
return arr;
|
return arr;
|
||||||
@@ -65,9 +66,7 @@ end
|
|||||||
// Translates given string using Translations.ini
|
// Translates given string using Translations.ini
|
||||||
procedure Translate(variable id, variable def) begin
|
procedure Translate(variable id, variable def) begin
|
||||||
variable str := get_ini_string(translationIni + "|Sfall|" + id);
|
variable str := get_ini_string(translationIni + "|Sfall|" + id);
|
||||||
if (str == 0 orElse (strlen(str) == 0)) then begin
|
if (str == 0 orElse strlen(str) == 0) then return def;
|
||||||
str := def;
|
|
||||||
end
|
|
||||||
return str;
|
return str;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
Item Highlight mod (Lite version) for sfall 3.8.x
|
Item Highlighting mod (Lite version) for sfall 3.8.x
|
||||||
-------------------------------------------------
|
----------------------------------------------------
|
||||||
|
|
||||||
A cut-down version of the mod included in sfall 4.x, offers a bit more features than the built-in function.
|
A cut-down version of the mod included in sfall 4.x, offers more features than the built-in function.
|
||||||
Features:
|
Features:
|
||||||
- highlighting items, containers (optional) and lootable corpses (optional) on the ground
|
- highlights items, containers (optional) and lootable corpses (optional) on the ground
|
||||||
- configurable hotkey is used to trigger highlight
|
- configurable hotkey is used to trigger highlight
|
||||||
- only objects in direct line-of-sight of player are highlighted (optional)
|
- only objects in direct line-of-sight of player are highlighted (optional)
|
||||||
- motion scanner is required to enable highlight (optional)
|
- motion scanner is required to enable highlight (optional)
|
||||||
@@ -12,10 +12,10 @@ Features:
|
|||||||
|
|
||||||
Requires sfall 3.8.12 or higher.
|
Requires sfall 3.8.12 or higher.
|
||||||
|
|
||||||
To use, copy gl_highlighting_lite.int to your scripts folder, and copy sfall-mods.ini to the same directory as sfall.
|
To use, copy gl_highlighting_lite.int to your scripts folder and sfall-mods.ini to the mods folder in the same directory as sfall.
|
||||||
Also, you should disable the built-in function in ddraw.ini (ToggleItemHighlightsKey=0).
|
Create the mods folder if it does not exist. Also, you should disable the built-in function in ddraw.ini (ToggleItemHighlightsKey=0).
|
||||||
|
|
||||||
Note that due to the lack of newer game hooks in sfall 3.8.x, there are some minor visual glitches in the lite version:
|
Note that due to the lack of newer game hooks in sfall 3.8.x, there are some minor visual glitches in the lite version:
|
||||||
- items will be kept highlighted when entering combat while holding the highlight key.
|
- items will be kept highlighted when entering combat while holding the highlight key (fixed in 3.8.40+).
|
||||||
- when you pick up items while holding the highlight key, they will be kept highlighted if you drop them on the ground (fixed for 3.8.18+).
|
- when you pick up items while holding the highlight key, they will be kept highlighted if you drop them on the ground (fixed in 3.8.18+).
|
||||||
Both glitches can bo solved by pressing and releasing the highlight key again.
|
Both glitches can bo solved by pressing and releasing the highlight key again.
|
||||||
|
|||||||
@@ -9,10 +9,13 @@ Containers=0
|
|||||||
; Set to 1 to also highlight lootable corpses
|
; Set to 1 to also highlight lootable corpses
|
||||||
Corpses=0
|
Corpses=0
|
||||||
|
|
||||||
; Set to 1 to only highlight objects in the player's line-of-sight
|
; Set to 1 to also highlight critters, with the same rules as in combat
|
||||||
CheckLOS=0
|
Critters=0
|
||||||
|
|
||||||
; Set the color of outlines, available colors:
|
; Set to 1 to only highlight objects in the player's line-of-sight
|
||||||
|
CheckLOS=1
|
||||||
|
|
||||||
|
; Set the color of outlines for items, corpses, and containers; available colors:
|
||||||
; 1 - glowing red
|
; 1 - glowing red
|
||||||
; 2 - red
|
; 2 - red
|
||||||
; 4 - grey
|
; 4 - grey
|
||||||
@@ -20,11 +23,45 @@ CheckLOS=0
|
|||||||
; 16 - bright yellow
|
; 16 - bright yellow
|
||||||
; 32 - dark yellow
|
; 32 - dark yellow
|
||||||
; 64 - purple
|
; 64 - purple
|
||||||
; You can set a custom color from the game palette by multiplying the color index value by 256 (available since sfall 4.2.7)
|
; You can set a custom color from the game palette by multiplying the color index value by 256 (in 3.8.27 or later)
|
||||||
OutlineColor=16
|
OutlineColor=16
|
||||||
|
|
||||||
; Motion Scanner mode:
|
; Motion Scanner mode:
|
||||||
; 0 - ignored
|
; 0 - ignored
|
||||||
; 1 - requires Motion Scanner present in player inventory to activate highlighting
|
; 1 - requires Motion Sensor to be present in the player's inventory to activate highlighting
|
||||||
; 2 - requires Motion Scanner and also requires 1 charge on every use (depleted scanner will not work anymore)
|
; 2 - requires Motion Sensor and consumes 1 charge on every use (depleted sensor will not work anymore)
|
||||||
MotionScanner=0
|
MotionScanner=0
|
||||||
|
|
||||||
|
|
||||||
|
[CombatControl]
|
||||||
|
;Allows you to control other critters directly in combat
|
||||||
|
;Set to 0 to disable
|
||||||
|
;Set to 1 to control all critters in combat (allowed only in sfall debugging mode)
|
||||||
|
;Set to 2 to control all party members
|
||||||
|
;Set to 3 to let you use the command cursor to specify targets for party members to attack in combat
|
||||||
|
Mode=0
|
||||||
|
;If you want to control only specific critters, uncomment the PIDList line and set a comma-delimited list of PIDs
|
||||||
|
;PIDList=62,89,97,107,160,161
|
||||||
|
|
||||||
|
;Set a comma-delimited list of perk IDs for perks to be inherited from the player during the combat control
|
||||||
|
PerksList=0,73
|
||||||
|
|
||||||
|
;Set to 1 to allow the player to gain a positive reputation when killing NPCs while controlling other critters
|
||||||
|
GainReputation=0
|
||||||
|
|
||||||
|
;Choose a notification box to display the name of the controlled critter above the interface bar
|
||||||
|
;Must be between 5 and (4 + the value of BoxBarCount in ddraw.ini)
|
||||||
|
;For sfall 4.1.6+ the number for the notification box is set automatically, so just use any value
|
||||||
|
;Set to 0 to disable
|
||||||
|
DisplayName=0
|
||||||
|
|
||||||
|
;Set the color of display name, available colors:
|
||||||
|
;0 - green
|
||||||
|
;1 - red
|
||||||
|
;2 - white
|
||||||
|
;3 - yellow
|
||||||
|
;4 - dark yellow
|
||||||
|
;5 - blue
|
||||||
|
;6 - purple
|
||||||
|
;7 - dull pink
|
||||||
|
DisplayNameColor=0
|
||||||
|
|||||||
Binary file not shown.
@@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
Molotov Fire Damage mod for Fallout 2 by NovaRain
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
- molotov cocktail now inflicts fire damage to critters
|
||||||
|
- molotov cocktail can still blow up some doors and scenery objects as before
|
||||||
|
|
||||||
|
Requires sfall 3.8.4 or higher
|
||||||
|
|
||||||
|
NOTE: this script requires compiler from sfall modderspack with -s option
|
||||||
|
(short circuit evaluation)
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
procedure start;
|
||||||
|
procedure afterhitroll_handler;
|
||||||
|
|
||||||
|
#include "..\headers\define.h"
|
||||||
|
#include "..\headers\sfall\sfall.h"
|
||||||
|
#include "..\headers\sfall\define_extra.h"
|
||||||
|
|
||||||
|
procedure start begin
|
||||||
|
if game_loaded then begin
|
||||||
|
register_hook_proc(HOOK_AFTERHITROLL, afterhitroll_handler);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
procedure afterhitroll_handler begin
|
||||||
|
variable
|
||||||
|
hitType := get_sfall_arg,
|
||||||
|
attacker := get_sfall_arg,
|
||||||
|
target := get_sfall_arg,
|
||||||
|
slot, item;
|
||||||
|
|
||||||
|
if (target and attacker) then begin
|
||||||
|
if (attacker == dude_obj and active_hand == 0) then begin
|
||||||
|
slot := INVEN_TYPE_LEFT_HAND;
|
||||||
|
end else begin
|
||||||
|
slot := INVEN_TYPE_RIGHT_HAND;
|
||||||
|
end
|
||||||
|
item := critter_inven_obj(attacker, slot);
|
||||||
|
|
||||||
|
if (item and obj_pid(item) == PID_MOLOTOV_COCKTAIL) then begin
|
||||||
|
if (obj_type(target) == OBJ_TYPE_SCENERY and hitType > 1) then begin
|
||||||
|
set_proto_data(PID_MOLOTOV_COCKTAIL, PROTO_WP_DMG_TYPE, DMG_explosion);
|
||||||
|
end else begin
|
||||||
|
set_proto_data(PID_MOLOTOV_COCKTAIL, PROTO_WP_DMG_TYPE, DMG_fire);
|
||||||
|
set_attack_explosion_radius(2); // grenade radius
|
||||||
|
set_attack_is_explosion_fire;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
Molotov Fire Damage mod for Fallout 2 by NovaRain
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
- molotov cocktail now inflicts fire damage to critters
|
||||||
|
- molotov cocktail can still blow up some doors and scenery objects as before
|
||||||
|
|
||||||
|
|
||||||
|
Requires sfall 3.8.4 or higher.
|
||||||
|
|
||||||
|
To use, copy gl_molotov.int to your scripts folder.
|
||||||
|
|
||||||
|
This mod is an example of how you can use metarule2_explosions macros.
|
||||||
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user