Added an optional bug fix for the car charging issues, and made some changes in the wording.

Fixed the incorrect setting in CriticalOverrides.ini.
Updated version number for 3.7 release.
Unified tab/spaces usage, tweaked some typesettings, and trimmed trailing spaces in documents.
This commit is contained in:
NovaRain
2015-10-27 12:26:01 +08:00
parent 017b958b69
commit c34dc2700a
10 changed files with 172 additions and 170 deletions
+44 -45
View File
@@ -12,44 +12,44 @@
#define ATTACK_MODE_BURST 7
#define ATTACK_MODE_FLAME 8
#define OBJ_TYPE_ITEM (0)
#define OBJ_TYPE_CRITTER (1)
#define OBJ_TYPE_SCENERY (2)
#define OBJ_TYPE_WALL (3)
#define OBJ_TYPE_TILE (4)
#define OBJ_TYPE_MISC (5)
#define OBJ_TYPE_SPATIAL (6)
#define OBJ_TYPE_ITEM (0)
#define OBJ_TYPE_CRITTER (1)
#define OBJ_TYPE_SCENERY (2)
#define OBJ_TYPE_WALL (3)
#define OBJ_TYPE_TILE (4)
#define OBJ_TYPE_MISC (5)
#define OBJ_TYPE_SPATIAL (6)
/* Critter Flags */
#define CFLG_BARTER 2 //0x00000002 - Barter (can trade with)
#define CFLG_NOSTEAL 32 //0x00000020 - Steal (cannot steal from)
#define CFLG_NODROP 64 //0x00000040 - Drop (doesn't drop items)
#define CFLG_NOLIMBS 128 //0x00000080 - Limbs (can not lose limbs)
#define CFLG_NOAGES 256 //0x00000100 - Ages (dead body does not disappear)
#define CFLG_NOHEAL 512 //0x00000200 - Heal (damage is not cured with time)
#define CFLG_INVULN 1024 //0x00000400 - Invulnerable (cannot be hurt)
#define CFLG_FLATTN 2048 //0x00000800 - Flatten (leaves no dead body)
#define CFLG_SPECIAL 4096 //0x00001000 - Special (there is a special type of death)
#define CFLG_RANGED 8192 //0x00002000 - Range (melee attack is possible at a distance)
#define CFLG_NOKNOCKDOWN 16384 //0x00004000 - Knock (cannot be knocked down)
#define CFLG_BARTER 2 //0x00000002 - Barter (can trade with)
#define CFLG_NOSTEAL 32 //0x00000020 - Steal (cannot steal from)
#define CFLG_NODROP 64 //0x00000040 - Drop (doesn't drop items)
#define CFLG_NOLIMBS 128 //0x00000080 - Limbs (cannot lose limbs)
#define CFLG_NOAGES 256 //0x00000100 - Ages (dead body does not disappear)
#define CFLG_NOHEAL 512 //0x00000200 - Heal (damage is not cured with time)
#define CFLG_INVULN 1024 //0x00000400 - Invulnerable (cannot be hurt)
#define CFLG_FLATTN 2048 //0x00000800 - Flatten (leaves no dead body)
#define CFLG_SPECIAL 4096 //0x00001000 - Special (there is a special type of death)
#define CFLG_RANGED 8192 //0x00002000 - Range (melee attack is possible at a distance)
#define CFLG_NOKNOCKDOWN 16384 //0x00004000 - Knock (cannot be knocked down)
//remove inven obj defines
#define RMOBJ_CONSUME_DRUG 4666772
#define RMOBJ_CONTAINER 4683293 // same as RMOBJ_TRADE
#define RMOBJ_USE_OBJ 4666865
#define RMOBJ_EQUIP_ARMOR 4658121
#define RMOBJ_EQUIP_WEAPON 4658675
#define RMOBJ_UNLOAD_WEAPON 4667030
//#definE RMOBJ_LOAD_WEAPON 4831349 // same as RMOBJ_DROP
#define RMOBJ_USE_DRUG_ON 4834866
#define RMOBJ_STEAL_VIEW 4668206
//#define RMOBJ_DROP_DYNAMITE 4666865 // same as USE_OBJ
#define RMOBJ_ITEM_DESTROYED 4543215
#define RMOBJ_ITEM_REMOVED 4548572
#define RMOBJ_ARMOR_EQUIPED 4651961
#define RMOBJ_LEFT_HAND_EQUIPED 4651899
#define RMOBJ_CONSUME_DRUG 4666772
#define RMOBJ_CONTAINER 4683293 // same as RMOBJ_TRADE
#define RMOBJ_USE_OBJ 4666865
#define RMOBJ_EQUIP_ARMOR 4658121
#define RMOBJ_EQUIP_WEAPON 4658675
#define RMOBJ_UNLOAD_WEAPON 4667030
//#define RMOBJ_LOAD_WEAPON 4831349 // same as RMOBJ_DROP
#define RMOBJ_USE_DRUG_ON 4834866
#define RMOBJ_STEAL_VIEW 4668206
//#define RMOBJ_DROP_DYNAMITE 4666865 // same as USE_OBJ
#define RMOBJ_ITEM_DESTROYED 4543215
#define RMOBJ_ITEM_REMOVED 4548572
#define RMOBJ_ARMOR_EQUIPED 4651961
#define RMOBJ_LEFT_HAND_EQUIPED 4651899
#define RMOBJ_RIGHT_HAND_EQUIPED 4651934
#define RMOBJ_RM_MULT_OBJS 4563866
#define RMOBJ_RM_MULT_OBJS 4563866
#define RMOBJ_REPLACE_WEAPON 4658526
#define RMOBJ_THROW 4266040
@@ -139,7 +139,6 @@
#define PROTO_DR_ADDICT_PERK (96)
#define PROTO_DR_ADDICT_DELAY (100)
// critters
#define PROTO_CR_ACTION_FLAGS (32)
#define PROTO_CR_HEAD_FID (40)
@@ -194,17 +193,17 @@
#define PERK_add_tragic (71)
#define PERK_armor_charisma (72)
#define WPN_ANIM_NONE (0x00) // (A)
#define WPN_ANIM_KNIFE (0x01) // (D)
#define WPN_ANIM_CLUB (0x02) // (E)
#define WPN_ANIM_SLEDGEHAMMER (0x03) // (F)
#define WPN_ANIM_SPEAR (0x04) // (G)
#define WPN_ANIM_PISTOL (0x05) // (H)
#define WPN_ANIM_SMG (0x06) // (I)
#define WPN_ANIM_RIFLE (0x07) // (J)
#define WPN_ANIM_BIG_GUN (0x08) // (K)
#define WPN_ANIM_MINIGUN (0x09) // (L)
#define WPN_ANIM_ROCKET_LAUNCHER (0x0A) // (M)
#define WPN_ANIM_NONE (0x00) // (A)
#define WPN_ANIM_KNIFE (0x01) // (D)
#define WPN_ANIM_CLUB (0x02) // (E)
#define WPN_ANIM_SLEDGEHAMMER (0x03) // (F)
#define WPN_ANIM_SPEAR (0x04) // (G)
#define WPN_ANIM_PISTOL (0x05) // (H)
#define WPN_ANIM_SMG (0x06) // (I)
#define WPN_ANIM_RIFLE (0x07) // (J)
#define WPN_ANIM_BIG_GUN (0x08) // (K)
#define WPN_ANIM_MINIGUN (0x09) // (L)
#define WPN_ANIM_ROCKET_LAUNCHER (0x0A) // (M)
#endif // DEFINE_EXTRA_H
+36 -37
View File
@@ -41,7 +41,7 @@
#define HOOK_STEAL (22)
#define HOOK_WITHINPERCEPTION (23)
#define HOOK_INVENTORYMOVE (24)
#define HOOK_INVENWIELD (25)
#define HOOK_INVENWIELD (25)
//Valid arguments to list_begin
#define LIST_CRITTERS (0)
@@ -89,7 +89,7 @@
#define VALTYPE_FLOAT (2)
#define VALTYPE_STR (3)
// Arrays defines
//Arrays defines
// create persistent list
#define create_array_list(size) (create_array(size, 0))
@@ -125,40 +125,40 @@
#define key_pressed_vk(key) (key_pressed(key bwor 0x80000000))
#define set_attack_explosion_pattern(x, y) metarule2_explosions(1, x, y)
#define set_attack_explosion_art(x, y) metarule2_explosions(2, x, y)
#define set_attack_explosion_radius(x) metarule2_explosions(3, x, 0)
#define set_attack_is_explosion(x) metarule2_explosions(4, x, 0)
#define set_attack_explosion_art(x, y) metarule2_explosions(2, x, y)
#define set_attack_explosion_radius(x) metarule2_explosions(3, x, 0)
#define set_attack_is_explosion(x) metarule2_explosions(4, x, 0)
#define set_attack_is_explosion_fire set_attack_is_explosion(DMG_fire)
#define GAME_MSG_COMBAT (0)
#define GAME_MSG_AI (1)
#define GAME_MSG_SCRNAME (2)
#define GAME_MSG_MISC (3)
#define GAME_MSG_CUSTOM (4)
#define GAME_MSG_INVENTRY (5)
#define GAME_MSG_ITEM (6)
#define GAME_MSG_LSGAME (7)
#define GAME_MSG_MAP (8)
#define GAME_MSG_OPTIONS (9)
#define GAME_MSG_PERK (10)
#define GAME_MSG_PIPBOY (11)
#define GAME_MSG_QUESTS (12)
#define GAME_MSG_PROTO (13)
#define GAME_MSG_SCRIPT (14)
#define GAME_MSG_SKILL (15)
#define GAME_MSG_SKILLDEX (16)
#define GAME_MSG_STAT (17)
#define GAME_MSG_TRAIT (18)
#define GAME_MSG_WORLDMAP (19)
#define GAME_MSG_PRO_ITEM (0x1000)
#define GAME_MSG_PRO_CRIT (0x1001)
#define GAME_MSG_PRO_SCEN (0x1002)
#define GAME_MSG_PRO_WALL (0x1003)
#define GAME_MSG_PRO_TILE (0x1004)
#define GAME_MSG_PRO_MISC (0x1005)
#define GAME_MSG_COMBAT (0)
#define GAME_MSG_AI (1)
#define GAME_MSG_SCRNAME (2)
#define GAME_MSG_MISC (3)
#define GAME_MSG_CUSTOM (4)
#define GAME_MSG_INVENTRY (5)
#define GAME_MSG_ITEM (6)
#define GAME_MSG_LSGAME (7)
#define GAME_MSG_MAP (8)
#define GAME_MSG_OPTIONS (9)
#define GAME_MSG_PERK (10)
#define GAME_MSG_PIPBOY (11)
#define GAME_MSG_QUESTS (12)
#define GAME_MSG_PROTO (13)
#define GAME_MSG_SCRIPT (14)
#define GAME_MSG_SKILL (15)
#define GAME_MSG_SKILLDEX (16)
#define GAME_MSG_STAT (17)
#define GAME_MSG_TRAIT (18)
#define GAME_MSG_WORLDMAP (19)
#define GAME_MSG_PRO_ITEM (0x1000)
#define GAME_MSG_PRO_CRIT (0x1001)
#define GAME_MSG_PRO_SCEN (0x1002)
#define GAME_MSG_PRO_WALL (0x1003)
#define GAME_MSG_PRO_TILE (0x1004)
#define GAME_MSG_PRO_MISC (0x1005)
#define mstr_combat(x) (message_str_game(GAME_MSG_COMBAT, x))
#define mstr_combat(x) (message_str_game(GAME_MSG_COMBAT, x))
#define mstr_ai(x) (message_str_game(GAME_MSG_AI, x))
#define mstr_scrname(x) (message_str_game(GAME_MSG_SCRNAME, x))
#define mstr_misc(x) (message_str_game(GAME_MSG_MISC, x))
@@ -180,11 +180,10 @@
#define mstr_worldmap(x) (message_str_game(GAME_MSG_WORLDMAP, x))
#define BLOCKING_TYPE_BLOCK (0)
#define BLOCKING_TYPE_SHOOT (1) // use this for more realistic line-of-sight checks
#define BLOCKING_TYPE_AI (2)
#define BLOCKING_TYPE_SIGHT (3) // not really useful (works not as you would expect), game uses this only when checking if you can talk to a person
#define BLOCKING_TYPE_BLOCK (0)
#define BLOCKING_TYPE_SHOOT (1) // use this for more realistic line-of-sight checks
#define BLOCKING_TYPE_AI (2)
#define BLOCKING_TYPE_SIGHT (3) // not really useful (works not as you would expect), game uses this only when checking if you can talk to a person
#define party_member_list_critters party_member_list(0)
#define party_member_list_all party_member_list(1)
+10 -10
View File
@@ -31,22 +31,22 @@ Used from a normal global script if you want to run it at the same point a full
void register_hook_proc(int hooktype, proc procedure)
The same as register_hook, except that you specifically define which procedure in the current script should be called as a hook (instead of "start"). Pass procedure the same as how you use dialog option functions. This IS the recommended way to use hook scripts, as it gives both modularity (each mod logic in a separate global script, no conflicts if you don't use "hs_*.int" scripts) and flexibility (you can place all related hook scripts for specific mod in a single script!).
NOTE: you can hook several scripts to a single hook point, for example if it's different mods from different authors or just some different aspects of one larger mod. In this case scripts are executed in reverse order of how they were registered. When one of the scripts in a chain returns value with "set_sfall_return", the next script may override this value if calls "set_sfall_return" again. Sometimes you need to multiply certain value in a chain of hook scripts.
NOTE: you can hook several scripts to a single hook point, for example if it's different mods from different authors or just some different aspects of one larger mod. In this case scripts are executed in reverse order of how they were registered. When one of the scripts in a chain returns value with "set_sfall_return", the next script may override this value if calls "set_sfall_return" again. Sometimes you need to multiply certain value in a chain of hook scripts.
Example: let's say we have a Mod A which reduces all "to hit" chances by 50%. The code might look like this:
original_chance = get_sfall_arg;
set_sfall_return(original_chance / 2);
Mod B also want to affect hit chances globally, by increasing them by 50%. Now in order for both mods to work well together, we need to add this line to Mod A hook script:
set_sfall_arg(original_chance / 2);
This basically changes hook argument for the next script. Mod B code:
original_chance = get_sfall_arg;
set_sfall_return(original_chance * 1.5);
set_sfall_arg(original_chance * 1.5);
So if you combine both mods together, they will run in chain and the end result will be a 75% from original hit chance (hook register order doesn't matter in this case, if you use "set_sfall_arg" in both hooks).
@@ -296,7 +296,7 @@ int ret2 - The new maximum damage
hs_ammocost.int
Runs when calculating ammo cost for a weapon. Doesn't affect damage, only how much ammo is spent.
By default, weapon will shoot when at least 1 round is left, regardless of ammo cost calculations.
By default, weapon will shoot when at least 1 round is left, regardless of ammo cost calculations.
To add proper check for ammo before shooting and proper calculation of number of burst rounds, set Misc.CheckWeaponAmmoCost=1 in ddraw.ini
Item arg1 - weapon
@@ -335,7 +335,7 @@ hs_useskill.int
Runs when using any skill on any object.
This is fired before the default handlers are called, which you can override. In this case you should write your own skill use handler entirely, or otherwise nothing will happen (this includes fade in/fade out, time lapsing and messages - all of this can be scripted; to get vanilla text messages - use message_str_game() along with sprintf()).
Suggested use - override first aid/doctor skills to buff/nerf them, override steal skill to disallow observing NPCs inventories in some cases.
Suggested use - override first aid/doctor skills to buff/nerf them, override steal skill to disallow observing NPCs inventories in some cases.
Doesn't seem to run when lock picking.
Critter arg1 - The user critter
@@ -349,9 +349,9 @@ int ret1 - overrides hard-coded handler (-1 - use engine handler, any other
hs_steal.int
Runs when checking an attempt to steal or plant an item in other inventory using Steal skill.
Runs when checking an attempt to steal or plant an item in other inventory using Steal skill.
This is fired before the default handlers are called, which you can override. In this case you MUST provide message of the result to player ("You steal the %s", "You are caught planting the %s", etc.).
This is fired before the default handlers are called, which you can override. In this case you MUST provide message of the result to player ("You steal the %s", "You are caught planting the %s", etc.).
Example message (vanilla behavior): display_msg(sprintf(mstr_skill(570 + (isSuccess != false) + arg4*2), obj_name(arg3)));
Critter arg1 - Thief
@@ -369,7 +369,7 @@ Runs when checking if one critter sees another critter. This is used in differen
NOTE: obj_can_see_obj calls this first when deciding if critter can possibly see another critter with regard to perception, lighting, sneak factors. If check fails, the end result is false. If check succeeds (eg. critter is within perception range), another check is made if there is any blocking tile between two critters (which includes stuff like windows, large bushes, barrels, etc.) and if there is - check still fails. You can override "within perception" check by returning 0 or 1, OR, as a convenience, you can also override blocking check after the perception check by returning 2 instead. In this case you should add "line of sight" check inside your hook script, otherwise critters will detect you through walls.
This is fired after the default calculation is made.
This is fired after the default calculation is made.
Critter arg1 - Watcher object
Obj arg2 - Target objet