mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a196160258 | ||
|
|
55a97a5793 | ||
|
|
3eaa64ee16 | ||
|
|
aa9257ab1c | ||
|
|
81a8fd4863 | ||
|
|
ed260ad7e5 | ||
|
|
9dce3c8d62 | ||
|
|
f28a179c78 | ||
|
|
540abbe273 | ||
|
|
8dda3940d0 | ||
|
|
44b9b24490 | ||
|
|
dafbc357b2 | ||
|
|
02572a5193 | ||
|
|
cab19b5ca0 | ||
|
|
d6952a0c93 | ||
|
|
b996867d65 | ||
|
|
bd18c240f9 | ||
|
|
2ad28e3086 | ||
|
|
ef5ff4e90f | ||
|
|
0a672c1e10 | ||
|
|
01214633f4 | ||
|
|
334e98c4c1 | ||
|
|
78a29ad556 | ||
|
|
e5d14ff845 | ||
|
|
716bfd4156 | ||
|
|
9b67db7208 | ||
|
|
e92ded34e4 | ||
|
|
1689542165 | ||
|
|
2c86201db9 | ||
|
|
d7c9acf713 | ||
|
|
399da0d322 | ||
|
|
774adaa3b0 | ||
|
|
b4d174d91b | ||
|
|
3291f6fe17 | ||
|
|
84f442ca08 | ||
|
|
f5c35eb639 | ||
|
|
514894ed59 | ||
|
|
204810d067 | ||
|
|
ec4ba13a28 | ||
|
|
14a6ef7fc6 | ||
|
|
c3a74070ca | ||
|
|
302fd4bb51 | ||
|
|
c7520c71cf | ||
|
|
45632d6887 | ||
|
|
866c9165c0 | ||
|
|
813abbf452 | ||
|
|
c6864e01f6 | ||
|
|
0eab48932a | ||
|
|
6c3efc5b84 | ||
|
|
cb8d7dc94a | ||
|
|
5786cfb267 | ||
|
|
78dfb530a9 | ||
|
|
d588f2e691 | ||
|
|
daf7a82997 | ||
|
|
9ad2b19e1a | ||
|
|
4b66dd3682 | ||
|
|
4899aeece1 | ||
|
|
946266e367 | ||
|
|
438ea071fc | ||
|
|
89760235c7 | ||
|
|
321f1c6034 | ||
|
|
513338f160 | ||
|
|
08b92542f4 | ||
|
|
46013c94b0 | ||
|
|
7a4ab59089 | ||
|
|
e505e204cb | ||
|
|
7343754d53 | ||
|
|
ae1e17d359 | ||
|
|
32dbe5581d | ||
|
|
a93ad5a9ba | ||
|
|
874b047ce1 | ||
|
|
afa590c5a8 | ||
|
|
b89c52fcec | ||
|
|
ec2d323f75 | ||
|
|
586679b07f |
@@ -7,6 +7,34 @@
|
||||
; have an additional NoHardcode option in this file which can
|
||||
; be used to remove their hardcoded effects, and add new stat/skill effects
|
||||
|
||||
;Name=The name of the perk
|
||||
;Desc=The description of the perk
|
||||
;Image=The line number (0-indexed) of the corresponding FRM in skilldex.lst
|
||||
;Ranks=The number of perk levels
|
||||
;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
|
||||
;Stat=The modified stat or -1 if you don't want to change any stats
|
||||
;StatMag=The increased/decreased value to the modified stat
|
||||
;Skill1=The first skill (or -1 for none) to check, but if you set a specific bit
|
||||
; (67108864 or 0x4000000), it checks GVAR. For example, if Skill1=67108864, then
|
||||
; the perk will check GVAR_PLAYER_REPUTATION (67108864 + 0) on Skill1Mag value
|
||||
;Skill1Mag=Positive value is used as the minimum requirements of the first
|
||||
; skill/GVAR, and a negative value is interpreted as the maximum requirement.
|
||||
; 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
|
||||
;Skill2=The second skill/GVAR (or -1 for none) to check
|
||||
;Skill2Mag=Same as Skill1Mag, but for Skill2
|
||||
;STR-LCK=Positive values are used as minimum requirements of SPECIAL stats, and
|
||||
; negative values are interpreted as maximum requirements. 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)
|
||||
|
||||
;This is a modification to perk 119
|
||||
[119]
|
||||
Name=Example
|
||||
@@ -36,4 +64,4 @@ Name=Example
|
||||
Desc=This is an example trait
|
||||
Image=72
|
||||
StatMod=0|-1 ;Subtract 1 from strength
|
||||
SkillMod=0|20|1|-5 ;Add 20 to the players small guns skill and subtract 5 from big guns
|
||||
SkillMod=0|20|1|-5 ;Add 20 to the player's small guns skill and subtract 5 from big guns
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[sfall]
|
||||
SaveInCombat=Cannot save at this time
|
||||
SaveInCombat=Cannot save at this time.
|
||||
KarmaGain=You gained %d karma.
|
||||
KarmaLoss=You lost %d karma.
|
||||
HighlightFail1=You aren't carrying a motion sensor.
|
||||
@@ -11,4 +11,4 @@ SaveSfallDataFail=ERROR saving extended savegame information! Check if other pro
|
||||
[AppearanceMod]
|
||||
RaceText=Race
|
||||
StyleText=Style
|
||||
MainButtonText=Appearance
|
||||
MainButtonText=Appearance
|
||||
|
||||
+39
-12
@@ -1,5 +1,5 @@
|
||||
;sfall configuration settings
|
||||
;v3.8.4
|
||||
;v3.8.11
|
||||
|
||||
[Main]
|
||||
;Change to 1 if you want to use command line args to tell sfall to use another ini file.
|
||||
@@ -72,7 +72,7 @@ Use32BitHeadGraphics=0
|
||||
|
||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
[Input]
|
||||
;Set to 1 to enable the mouse scroll wheel to scroll through your inventory
|
||||
;Set to 1 to enable the mouse scroll wheel to scroll through inventory, barter, and loot screens
|
||||
UseScrollWheel=1
|
||||
|
||||
;The mouse Z position is divided by this modifier to calculate the number of inventory
|
||||
@@ -107,7 +107,7 @@ SpeedModKey=-1
|
||||
|
||||
;A key to press to toggle the speed tweak on or off
|
||||
;Specify 0 if you don't want a toggle key, or a DX scancode otherwise
|
||||
SpeedToggleKey=0x00
|
||||
SpeedToggleKey=0
|
||||
|
||||
;The keys corresponding to the 10 speed slots
|
||||
;Set to 0 to disable a slot, otherwise specify the DX scancode of the key you want to use
|
||||
@@ -128,6 +128,7 @@ SpeedKey9=0x00
|
||||
WindowScrollKey=0
|
||||
|
||||
;A key to press to toggle the highlighting of all items on the ground on the current map
|
||||
;Set to 0 if you don't want a toggle key, or a DX scancode otherwise
|
||||
ToggleItemHighlightsKey=42
|
||||
|
||||
;Set to 1 to also highlight containers
|
||||
@@ -144,9 +145,15 @@ HighlightContainers=0
|
||||
OutlineColor=0x10
|
||||
|
||||
;A key to press to reload your currently equipped weapon
|
||||
;Set to 0 if you don't want a reload key, or a DX scancode otherwise
|
||||
ReloadWeaponKey=0
|
||||
|
||||
;A key to press to open a debug game editor
|
||||
;A key to hold down to let you move/drop a whole stack of items at once without the 'Move Items' window
|
||||
;Set to 0 if you don't want to use a modifier key, or a DX scancode otherwise
|
||||
ItemFastMoveKey=0x1d
|
||||
|
||||
;A key to press to open a debug game editor (requires FalloutClient.exe from the modders pack)
|
||||
;Set to 0 to disable, or a DX scancode otherwise
|
||||
DebugEditorKey=0
|
||||
|
||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
@@ -180,7 +187,7 @@ WorldMapEncounterRate=5
|
||||
|
||||
;The number of slots available in the locations list panel of the world map
|
||||
;Set to 0 to leave unchanged. 17 is default.
|
||||
;Setting this greater than 17 requires a replacement background frm, or you'll get glitched graphics
|
||||
;Setting this greater than 17 requires a replacement background FRM, or you'll get glitched graphics
|
||||
WorldMapSlots=0
|
||||
|
||||
;To start a new game somewhere other than artemple.map, uncomment the next line and set it to the map you want to load
|
||||
@@ -200,7 +207,7 @@ WorldMapSlots=0
|
||||
;PatchFile=patch%03d.dat
|
||||
;MultiPatches=0
|
||||
|
||||
;Set to 1 to enable the modified data load order for the engine to find game data
|
||||
;Set to 1 to use the modified data load order for the engine to find game data
|
||||
;Original: 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
|
||||
DataLoadOrderPatch=0
|
||||
@@ -304,7 +311,7 @@ SaveInCombatFix=1
|
||||
;Player's level is capped once the highest specified level is reached
|
||||
;XPTable=50,100,200
|
||||
|
||||
;Set to 1 to enable additional weapon animations codes from o-t
|
||||
;Set to 1 to enable additional weapon animation codes from o-t
|
||||
;The 4 byte value at 0x39 of weapon protos may range from 0 to 15 rather than 0 to 10
|
||||
;Since the letters 'n' and 'r' are in use for other animations, an animation code of 11 corrisponds to 's' and 15 to 't'
|
||||
AdditionalWeaponAnims=1
|
||||
@@ -355,12 +362,19 @@ SkipOpeningMovies=0
|
||||
;Set to 0 to disable
|
||||
NPCsTryToSpendExtraAP=0
|
||||
|
||||
;Set to 1 to fix NPCs not checking weapon perks properly when searching for the best weapon
|
||||
;Note that enabling this option can significantly affect the weapon choice of some NPCs in combat
|
||||
AIBestWeaponFix=0
|
||||
|
||||
;Allows the use of tiles over 80*36 in size. sfall will just split and resave them at startup
|
||||
;Set to 1 to check all tiles on started (slow)
|
||||
;Set to 2 if you provide a XLtiles.lst file in art/tiles/ containing a list of the tile ids that need checking
|
||||
AllowLargeTiles=0
|
||||
|
||||
;Change the Skilldex cursor frm numbers
|
||||
;Set to 1 to boost the maximum number of tile FRMs from 4096 to 16383
|
||||
MoreTiles=0
|
||||
|
||||
;Change the Skilldex cursor FRM numbers
|
||||
;Default is 293 for all skills
|
||||
Lockpick=293
|
||||
Steal=293
|
||||
@@ -373,7 +387,7 @@ Repair=293
|
||||
;Remove window position rounding
|
||||
RemoveWindowRounding=0
|
||||
|
||||
;Set to 1 to add scroll buttons to the pip boy quest list, and remove the quests per area limit
|
||||
;Set to 1 to add scroll buttons to the pipboy quest list, and remove the quests per area limit
|
||||
UseScrollingQuestsList=1
|
||||
|
||||
;Uncomment these lines to control the premade characters offered when starting a new game
|
||||
@@ -382,7 +396,7 @@ UseScrollingQuestsList=1
|
||||
;PremadeFIDs=201,203,202
|
||||
|
||||
;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.
|
||||
;CityRepsCount=19
|
||||
;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
|
||||
|
||||
@@ -396,7 +410,7 @@ ExtraSaveSlots=0
|
||||
;Set to 2 to update the HP/AC counters instantly
|
||||
SpeedInterfaceCounterAnims=0
|
||||
|
||||
;These lines allow you to control the karma frm's displayed on the character screen
|
||||
;These lines allow you to control the karma FRMs displayed on the character screen
|
||||
;Number of KarmaPoints should be 1 less than number of KarmaFRMs
|
||||
;KarmaFRMsCount=3
|
||||
;KarmaFRMs=47,48,49
|
||||
@@ -419,6 +433,9 @@ BonusHtHDamageFix=1
|
||||
;Set to 1 to display additional points of damage from Bonus HtH/Ranged Damage perks in the inventory
|
||||
DisplayBonusDamage=0
|
||||
|
||||
;Set to 1 to display the range of the second attack mode in the inventory when you switch weapon modes in active item slots
|
||||
DisplaySecondWeaponRange=1
|
||||
|
||||
;Modify the maximum number of animations allowed to run on a map. (Default is 32, and the maximum is 127)
|
||||
AnimationsAtOnceLimit=120
|
||||
|
||||
@@ -429,7 +446,7 @@ RemoveCriticalTimelimits=0
|
||||
NPCStage6Fix=0
|
||||
|
||||
;Change the colour of the font used on the main menu for the Fallout/sfall version number
|
||||
;It's the last byte ('3c' by default,) that picks the colour used. The first byte supplies additional flags
|
||||
;It's the last byte ('3c' by default) that picks the colour used. The first byte supplies additional flags
|
||||
;MainMenuFontColour=0x0600003c
|
||||
|
||||
;Two alternate fixes to the interaction between HtH attacks and the fast shot trait
|
||||
@@ -550,16 +567,23 @@ StackEmptyWeapons=0
|
||||
;If the amount of ammo boxes in the inventory is less than or equal to the reserve, only one box will be used
|
||||
ReloadReserve=-1
|
||||
|
||||
;Set to 1 to change the counter in the 'Move Items' window to start at the maximum number of items
|
||||
ItemCounterDefaultMax=0
|
||||
|
||||
;Allows 9 options (lines of text) to be displayed correctly in a dialog window
|
||||
DialogOptions9Lines=1
|
||||
|
||||
;Set to 1 to leave the music playing in dialogue with talking heads
|
||||
EnableMusicInDialogue=0
|
||||
|
||||
;Set to 1 to prevent the player from running while sneaking without Silent Running perk
|
||||
DontTurnOffSneakIfYouRun=0
|
||||
|
||||
;Set to 1 to fix the bug that unable to sell used geiger counters or stealth boys
|
||||
CanSellUsedGeiger=1
|
||||
|
||||
;Set to 1 to fix the issue with being able to charge the car by using cells on other scenary/critters
|
||||
;Set to 0 if another mod you're using has custom vehicles
|
||||
CarChargingFix=1
|
||||
|
||||
;Set to 1 to skip weapon equip/unequip animations when performing various actions
|
||||
@@ -572,6 +596,9 @@ InstantWeaponEquip=0
|
||||
;Set to 1 to display numbered dialogue options
|
||||
NumbersInDialogue=0
|
||||
|
||||
;Set to 1 to use Fallout's normal text font instead of DOS-like font on the world map
|
||||
WorldMapFontPatch=0
|
||||
|
||||
;Set to 1 to display sfall built-in credits at the bottom of credits.txt contents instead of at the top
|
||||
CreditsAtBottom=0
|
||||
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
|
||||
Auto Doors mod for Fallout 2 by Mr.Stalin
|
||||
-----------------------------------------
|
||||
|
||||
- allows the player to automatically open/walk through unlocked doors when not in combat
|
||||
|
||||
Requires sfall 3.7b or higher
|
||||
|
||||
NOTE: this script requires compiler from sfall modderspack with -s option
|
||||
(short circuit evaluation)
|
||||
|
||||
*/
|
||||
|
||||
#include "..\headers\define.h"
|
||||
#include "..\headers\command.h"
|
||||
#include "..\headers\sfall\sfall.h"
|
||||
#include "..\headers\sfall\define_extra.h"
|
||||
|
||||
procedure start;
|
||||
procedure map_enter_p_proc;
|
||||
procedure set_door_flag(variable state);
|
||||
procedure combatturn_handler;
|
||||
|
||||
#define PORTAL (0)
|
||||
#define DOOR_FLAGS (0x24)
|
||||
|
||||
variable only_once := 0;
|
||||
|
||||
procedure start begin
|
||||
if game_loaded then begin
|
||||
if (sfall_ver_major >= 4) then
|
||||
register_hook_proc(HOOK_COMBATTURN, combatturn_handler);
|
||||
else
|
||||
set_global_script_repeat(60);
|
||||
call map_enter_p_proc;
|
||||
end else begin
|
||||
if (only_once == 1 and combat_is_initialized) then begin
|
||||
only_once := 2;
|
||||
call set_door_flag(false);
|
||||
end else if (only_once == 2 and not(combat_is_initialized)) then begin
|
||||
only_once := 1;
|
||||
if (sfall_ver_major >= 4) then
|
||||
set_global_script_repeat(0);
|
||||
call set_door_flag(FLAG_WALKTHRU);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
procedure map_enter_p_proc begin
|
||||
only_once := 1;
|
||||
call set_door_flag(FLAG_WALKTHRU);
|
||||
end
|
||||
|
||||
procedure set_door_flag(variable state) begin
|
||||
variable objectMap, obj, objPid, arrayPid, i;
|
||||
|
||||
objectMap := list_as_array(LIST_SCENERY);
|
||||
arrayPid := temp_array(1, 0);
|
||||
|
||||
foreach (obj in objectMap) begin
|
||||
objPid := obj_pid(obj);
|
||||
|
||||
if (proto_data(objPid, sc_type) != PORTAL) or is_in_array(objPid, arrayPid) then
|
||||
continue;
|
||||
|
||||
arrayPid[i] := objPid;
|
||||
i++;
|
||||
resize_array(arrayPid, i + 1);
|
||||
set_proto_data(objPid, DOOR_FLAGS, state);
|
||||
end
|
||||
end
|
||||
|
||||
procedure combatturn_handler begin
|
||||
if (only_once == 1) then
|
||||
set_global_script_repeat(60);
|
||||
end
|
||||
@@ -0,0 +1,9 @@
|
||||
Auto Doors mod for Fallout 2 by Mr.Stalin
|
||||
-----------------------------------------
|
||||
|
||||
- allows the player to automatically open/walk through unlocked doors when not in combat
|
||||
|
||||
|
||||
Requires sfall 3.7b or higher.
|
||||
|
||||
To use, copy gl_autodoors.int to your scripts folder.
|
||||
Binary file not shown.
+13
-11
@@ -1,22 +1,24 @@
|
||||
procedure start;
|
||||
procedure start;
|
||||
// adjust include paths if needed
|
||||
#include "..\..\scripting_docs\headers\sfall.h"
|
||||
#include "..\..\scripting_docs\headers\sfall.h"
|
||||
|
||||
#define RESULT_SUCCESS (1)
|
||||
#define RESULT_FAIL (0)
|
||||
|
||||
procedure start begin
|
||||
if not init_hook then begin
|
||||
|
||||
procedure start begin
|
||||
if game_loaded then begin
|
||||
register_hook(HOOK_STEAL);
|
||||
end else begin
|
||||
variable
|
||||
thief := get_sfall_arg,
|
||||
target := get_sfall_arg,
|
||||
item := get_sfall_arg,
|
||||
action := get_sfall_arg,
|
||||
result := RESULT_SUCCESS;
|
||||
|
||||
if (thief == dude_obj) then begin
|
||||
display_msg(sprintf(mstr_skill(570 + result + action*2), obj_name(item)));
|
||||
set_sfall_return(result);
|
||||
end
|
||||
end
|
||||
|
||||
if (thief == dude_obj) then begin
|
||||
display_msg(sprintf(mstr_skill(570 + result + action*2), obj_name(item)));
|
||||
set_sfall_return(result);
|
||||
end
|
||||
end
|
||||
end
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,20 @@
|
||||
procedure start;
|
||||
// adjust include paths if needed
|
||||
#include "..\..\scripting_docs\headers\sfall.h"
|
||||
#include "..\..\scripting_docs\headers\dik.h"
|
||||
|
||||
procedure start begin
|
||||
if game_loaded then begin
|
||||
register_hook(HOOK_KEYPRESS);
|
||||
end else begin
|
||||
variable
|
||||
event := get_sfall_arg,
|
||||
keyDX := get_sfall_arg;
|
||||
|
||||
if (event == 1) and (keyDX == DIK_SEMICOLON) then begin
|
||||
tap_key(DIK_CAPITAL);
|
||||
tap_key(DIK_A);
|
||||
tap_key(DIK_CAPITAL);
|
||||
end
|
||||
end
|
||||
end
|
||||
Binary file not shown.
@@ -1,16 +0,0 @@
|
||||
procedure start;
|
||||
#include ".\HEADERS\dik.h"
|
||||
|
||||
procedure start begin
|
||||
variable event, keyDX;
|
||||
if not init_hook then begin
|
||||
event := get_sfall_arg;
|
||||
keyDX := get_sfall_arg;
|
||||
|
||||
if ((event == 1) and (keyDX == DIK_SEMICOLON)) then begin
|
||||
tap_key(DIK_CAPITAL);
|
||||
tap_key(DIK_A);
|
||||
tap_key(DIK_CAPITAL);
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -2,8 +2,8 @@
|
||||
----------------------------------------
|
||||
|
||||
- makes pressing the semicolon key send an uppercase A after a semicolon.
|
||||
- the uppercase A (shift + A if Caps Lock is off) is the built-in hotkey for the TAKE ALL button on the loot screen.
|
||||
- Note: the uppercase A (shift + A if Caps Lock is off) is the built-in hotkey for the TAKE ALL button on the loot screen.
|
||||
|
||||
To use, copy hs_keypress.int file to your scripts folder.
|
||||
To use, copy *.int file to your scripts folder.
|
||||
|
||||
This mod is a simple example of how you can use HOOK_KEYPRESS hooks.
|
||||
|
||||
@@ -3,13 +3,23 @@ This folder contains documentation about sfall scripting extensions.
|
||||
headers\ - folder contains sfall headers that you should #include in your scripts
|
||||
sfall.h - main sfall header, always include it
|
||||
define_extra.h - some additional preprocessor constants for vanilla engine stuff (proto offsets, etc.)
|
||||
dik.h - DX scancodes constants for use with key_pressed function and HOOK_KEYPRESS
|
||||
|
||||
define_lite.h - a lite version of official define.h
|
||||
dik.h - DX scancodes constants for use with key_pressed function and HOOK_KEYPRESS
|
||||
lib.arrays.h - procedures that will help you use arrays in their full:
|
||||
- use them as stacks, sets
|
||||
- easily compare, copy, slice, cut, add arrays
|
||||
- display array contents (for debugging)
|
||||
- save/load two-dimensional arrays to savegame in one command (e.g. arrays of objects)
|
||||
lib.inven.h - fallout items manipulation functions
|
||||
lib.math.h - a few simple functions for calculations
|
||||
lib.strings.h - search in strings, join, repeat, etc.
|
||||
lib.misc.h - misc stuff
|
||||
|
||||
sfall function notes.txt - incomplete reference for new opcodes
|
||||
sfall opcode list.txt - list of all sfall opcodes (w/o descriptions)
|
||||
hookscripts.txt - detailed manual for using hook scripts to modify engine behavior
|
||||
arrays.txt - manual for sfall arrays
|
||||
|
||||
If you are/will be using sfall Script Editor, don't forget to check out new compiler documentation in ScriptEditor\docs\sslc_readme.txt,
|
||||
|
||||
If you are/will be using sfall Script Editor, don't forget to check out new compiler documentation in ScriptEditor\docs\sslc_readme.txt,
|
||||
there are numerious new syntax features and extensions to SSL (Star-Trek Scripting language).
|
||||
|
||||
|
||||
|
||||
@@ -83,11 +83,13 @@
|
||||
#define PROTO_IT_SIZE (112)
|
||||
#define PROTO_IT_WEIGHT (116)
|
||||
#define PROTO_IT_COST (120)
|
||||
#define PROTO_IT_INV_FID (124)
|
||||
|
||||
// weapons
|
||||
#define PROTO_WP_ANIM (36)
|
||||
#define PROTO_WP_DMG_MIN (40)
|
||||
#define PROTO_WP_DMG_MAX (44)
|
||||
#define PROTO_WP_DMG_TYPE (48)
|
||||
#define PROTO_WP_RANGE_1 (52)
|
||||
#define PROTO_WP_RANGE_2 (56)
|
||||
#define PROTO_WP_PROJ_PID (60)
|
||||
@@ -159,11 +161,10 @@
|
||||
#define PROTO_DR_ADDICT_DELAY (100)
|
||||
|
||||
// critters
|
||||
#define PROTO_CR_ACTION_FLAGS (32)
|
||||
#define PROTO_CR_FLAGS (32)
|
||||
#define PROTO_CR_HEAD_FID (40)
|
||||
#define PROTO_CR_AI_PACKET (44)
|
||||
#define PROTO_CR_TEAM_NUM (48)
|
||||
#define PROTO_CR_FLAGS (52)
|
||||
#define PROTO_CR_BODY_TYPE (388)
|
||||
#define PROTO_CR_KILL_EXP (392)
|
||||
#define PROTO_CR_KILL_TYPE (396)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,162 @@
|
||||
|
||||
#ifndef LIB_INVEN_H
|
||||
#define LIB_INVEN_H
|
||||
|
||||
#include "define_lite.h"
|
||||
|
||||
/**
|
||||
Inventory contents as temp array to be used in foreach
|
||||
*/
|
||||
procedure inven_as_array(variable critter) begin
|
||||
variable i:=0, list;
|
||||
list := temp_array(100, 4);
|
||||
while (inven_ptr(critter, i)) do begin
|
||||
if (i>=len_array(list)) then
|
||||
resize_array(list, len_array(list) + 100);
|
||||
list[i] := inven_ptr(critter, i);
|
||||
i++;
|
||||
end
|
||||
resize_array(list, i);
|
||||
return list;
|
||||
end
|
||||
|
||||
|
||||
procedure add_items_pid(variable who_obj, variable the_pid, variable pid_qty) begin
|
||||
variable item;
|
||||
item := create_object(the_pid,0,0);
|
||||
add_mult_objs_to_inven(who_obj, item, (pid_qty));
|
||||
return item;
|
||||
end
|
||||
|
||||
// aliases:
|
||||
#define add_item_pid(obj, pid) add_items_pid(obj, pid, 1)
|
||||
|
||||
#ifndef critter_wearing_armor
|
||||
#define critter_wearing_armor(x) (obj_item_subtype(critter_inven_obj(x,INVEN_TYPE_WORN)) == item_type_armor)
|
||||
#endif
|
||||
|
||||
procedure unwield_armor(variable who_obj) begin
|
||||
variable armor;
|
||||
if (not(who_obj)) then return;
|
||||
if (critter_wearing_armor(who_obj)) then begin
|
||||
armor := critter_inven_obj(who_obj,INVEN_TYPE_WORN);
|
||||
rm_obj_from_inven(who_obj, armor);
|
||||
add_obj_to_inven(who_obj, armor);
|
||||
end
|
||||
end
|
||||
|
||||
procedure remove_items_pid(variable who_obj, variable the_pid, variable pid_qty) begin
|
||||
variable begin
|
||||
item;
|
||||
removed_qty;
|
||||
tmp;
|
||||
end
|
||||
if (not(who_obj)) then return;
|
||||
removed_qty := obj_is_carrying_obj_pid(who_obj,the_pid);
|
||||
if (pid_qty < removed_qty and pid_qty != -1) then begin
|
||||
removed_qty := pid_qty;
|
||||
end
|
||||
if (removed_qty > 0) then begin
|
||||
item := obj_carrying_pid_obj(who_obj, the_pid);
|
||||
if (obj_type(who_obj) == 1) then begin
|
||||
if (critter_inven_obj(who_obj,INVEN_TYPE_WORN) == item) then begin
|
||||
call unwield_armor(who_obj);
|
||||
end else if ((critter_inven_obj(who_obj, INVEN_TYPE_LEFT_HAND) == item) or (critter_inven_obj(who_obj, INVEN_TYPE_RIGHT_HAND) == item)) then begin
|
||||
inven_unwield(who_obj);
|
||||
end
|
||||
end
|
||||
tmp := rm_mult_objs_from_inven(who_obj, item, removed_qty);
|
||||
destroy_object(item);
|
||||
end
|
||||
end
|
||||
|
||||
procedure remove_item_obj(variable who_obj, variable item) begin
|
||||
if (obj_type(who_obj) == 1) then begin
|
||||
if (critter_inven_obj(who_obj,INVEN_TYPE_WORN) == item) then begin
|
||||
call unwield_armor(who_obj);
|
||||
end else if ((critter_inven_obj(who_obj, INVEN_TYPE_LEFT_HAND) == item) or (critter_inven_obj(who_obj, INVEN_TYPE_RIGHT_HAND) == item)) then begin
|
||||
inven_unwield(who_obj);
|
||||
end
|
||||
end
|
||||
rm_obj_from_inven(who_obj, item);
|
||||
destroy_object(item);
|
||||
end
|
||||
|
||||
// aliases:
|
||||
#define remove_item_pid(obj, pid) remove_items_pid(obj, pid, 1)
|
||||
#define remove_all_items_pid(obj, pid) remove_items_pid(obj, pid, -1)
|
||||
|
||||
/**
|
||||
Set item quantity in inventory, by item pid
|
||||
*/
|
||||
procedure set_items_qty_pid(variable invenobj, variable itempid, variable newcount)
|
||||
begin
|
||||
variable begin
|
||||
count;
|
||||
obj;
|
||||
end
|
||||
count := obj_is_carrying_obj_pid(invenobj, itempid);
|
||||
if (newcount > count) then begin
|
||||
obj := create_object_sid(itempid, 0, 0, -1);
|
||||
add_mult_objs_to_inven(invenobj, obj, newcount - count);
|
||||
end else if (newcount < count) then begin
|
||||
call remove_items_pid(invenobj, itempid, count - newcount);
|
||||
end
|
||||
end
|
||||
|
||||
/*
|
||||
|
||||
procedure check_restock_item(the_item, min_amt, max_amt, res_perc)
|
||||
restock_amt := random(min_amt, max_amt);
|
||||
if (obj_is_carrying_obj_pid(self_obj, the_item) < restock_amt) then begin
|
||||
if (res_perc >= random(1,100)) then begin
|
||||
stock_pid_qty(self_obj, the_item, restock_amt)
|
||||
end
|
||||
end else begin
|
||||
stock_pid_qty(self_obj, the_item, restock_amt)
|
||||
end
|
||||
procedure check_restock_item_min_limit(the_item, min_amt, max_amt, res_perc)
|
||||
if (obj_is_carrying_obj_pid(self_obj, the_item) < min_amt) then begin
|
||||
check_restock_item(the_item, min_amt, max_amt, res_perc)
|
||||
end
|
||||
*/
|
||||
|
||||
|
||||
procedure reduce_merchant_loot(variable critter, variable moneyPercent, variable probArmor, variable probDrugs, variable probWeapons, variable probAmmo, variable probMisc) begin
|
||||
variable inv, item, it, prob, tmp;
|
||||
inv := inven_as_array(critter);
|
||||
item_caps_adjust(critter, -(item_caps_total(critter) * moneyPercent / 100));
|
||||
//display_msg("total items "+len_array(inv));
|
||||
foreach item in inv begin
|
||||
if (obj_pid(item) != PID_BOTTLE_CAPS) then begin
|
||||
it := obj_item_subtype(item);
|
||||
if (it == item_type_armor) then
|
||||
prob := probArmor;
|
||||
else if (it == item_type_drug) then
|
||||
prob := probDrugs;
|
||||
else if (it == item_type_weapon) then
|
||||
prob := probWeapons;
|
||||
else if (it == item_type_ammo) then
|
||||
prob := probAmmo;
|
||||
else
|
||||
prob := probMisc;
|
||||
if (random(0, 99) < prob) then begin
|
||||
//display_msg("remove "+obj_name(item));
|
||||
call remove_all_items_pid(critter, obj_pid(item));
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
procedure item_by_attack_type(variable critter, variable type) begin
|
||||
variable slot;
|
||||
if (type > 3 and type != ATKTYPE_LWEP_RELOAD and type != ATKTYPE_RWEP_RELOAD) then
|
||||
return 0;
|
||||
if (type < 2 or type == ATKTYPE_LWEP_RELOAD) then
|
||||
slot := INVEN_TYPE_LEFT_HAND;
|
||||
else
|
||||
slot := INVEN_TYPE_RIGHT_HAND;
|
||||
return critter_inven_obj(critter, slot);
|
||||
end
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,46 @@
|
||||
#ifndef LIB_MATH_H
|
||||
#define LIB_MATH_H
|
||||
|
||||
/**
|
||||
Numbers...
|
||||
*/
|
||||
|
||||
#define MAX(x, y) ((x > y) * x + (x <= y) * y)
|
||||
#define MIN(x, y) ((x < y) * x + (x >= y) * y)
|
||||
#define in_range(x, from, to) (x >= from and x <= to)
|
||||
|
||||
procedure max(variable x, variable y) begin
|
||||
if (x > y) then return x;
|
||||
return y;
|
||||
end
|
||||
|
||||
procedure min(variable x, variable y) begin
|
||||
if (x < y) then return x;
|
||||
return y;
|
||||
end
|
||||
|
||||
/*procedure round(variable val) begin
|
||||
variable intp;
|
||||
intp := floor(val);
|
||||
if ((val-intp) >= 0.5) then intp++;
|
||||
return intp;
|
||||
end*/
|
||||
|
||||
/*procedure ceil(variable val) begin
|
||||
variable intp;
|
||||
intp := floor(val);
|
||||
if (abs(val-intp) > 0.0) then begin
|
||||
intp++;
|
||||
end
|
||||
return intp;
|
||||
end*/
|
||||
|
||||
procedure cap_number(variable num, variable min, variable max) begin
|
||||
if (num > max) then num := max;
|
||||
else if (num < min) then num := min;
|
||||
return num;
|
||||
end
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user