Files
sfall/artifacts/example_mods/StaticBooks/gl_static_books.ssl
T

85 lines
2.3 KiB
ObjectPascal

/*
Static Books mod for Fallout 2 by NovaRain
------------------------------------------
- changes vanilla skill books to increase skills by a fixed amount
- reading a book gives +5% to a skill (+6% if tagged), +8% with the Comprehension perk
- books can still increase skills when over 91%
Requires sfall 3.5 or higher
*/
#include "..\headers\define.h"
#include "..\headers\command.h"
#include "..\headers\sfall\sfall.h"
#define BOOK_BONUS (5)
procedure start;
procedure useobj_handler;
procedure start begin
if game_loaded then begin
register_hook_proc(HOOK_USEOBJ, useobj_handler);
end
end
procedure useobj_handler begin
variable
user := get_sfall_arg,
obj := get_sfall_arg,
skill := -1,
bonus := BOOK_BONUS,
msg, skLevel;
if (obj_item_subtype(obj) == item_type_misc_item) then begin
switch obj_pid(obj) begin
case PID_BIG_BOOK_OF_SCIENCE:
skill := SKILL_SCIENCE;
msg := 802;
case PID_DEANS_ELECTRONICS:
skill := SKILL_REPAIR;
msg := 803;
case PID_FIRST_AID_BOOK:
skill := SKILL_FIRST_AID;
msg := 804;
case PID_SCOUT_HANDBOOK:
skill := SKILL_OUTDOORSMAN;
msg := 806;
case PID_GUNS_AND_BULLETS:
skill := SKILL_SMALL_GUNS;
msg := 805;
end
// read book
if (skill != -1) then begin
if combat_is_initialized then begin
display_msg(mstr_proto(902));
set_sfall_return(0);
return;
end
skLevel := has_skill(dude_obj, skill);
if (dude_perk(PERK_comprehension_perk)) then begin
bonus := (bonus * 3 + 1) / 2; // +50%, rounding up
end
if (bonus % 2) then begin
bonus += is_skill_tagged(skill); // adjustment for tagged skill when the bonus is an odd number
end
critter_mod_skill(dude_obj, skill, bonus);
gfade_out(1);
game_time_advance(ONE_GAME_HOUR * (11 - dude_iq));
exec_map_update_scripts;
gfade_in(1);
display_msg(mstr_proto(800));
if (has_skill(dude_obj, skill) == skLevel) then begin
msg := 801;
end
display_msg(mstr_proto(msg));
set_sfall_return(1); // remove
end
end
end