mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
78 lines
2.1 KiB
ObjectPascal
78 lines
2.1 KiB
ObjectPascal
/*
|
|
|
|
AP costs mod for fallout 2 by phobos2077
|
|
----------------------------------------
|
|
|
|
- increases AP cost of using all non-weapon items from main interface to 4
|
|
- AP are reduced even when using items (eg. stimpaks) from the inventory
|
|
|
|
Requires sfall 3.5 or higher
|
|
|
|
*/
|
|
|
|
|
|
#include "..\headers\define.h"
|
|
#include "sfall.h"
|
|
#include "define_extra.h"
|
|
|
|
#define ITEM_USE_COST (4)
|
|
|
|
variable last_used_item;
|
|
|
|
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
|
|
|
|
procedure apcost_handler begin
|
|
variable args := get_sfall_args, item;
|
|
item := item_by_attack_type(args[0], args[1]);
|
|
if (obj_item_subtype(item) != item_type_weapon) then begin
|
|
set_sfall_return(ITEM_USE_COST);
|
|
last_used_item := item;
|
|
end
|
|
end
|
|
|
|
procedure useobjon_handler begin
|
|
variable target, critter, item, ap, cost;
|
|
target := get_sfall_arg;
|
|
critter := get_sfall_arg;
|
|
item := get_sfall_arg;
|
|
|
|
if (combat_is_initialized) then begin
|
|
if (get_game_mode bwand INVENTORY) then
|
|
cost := ITEM_USE_COST;
|
|
else if (last_used_item != item) then
|
|
cost := ITEM_USE_COST - 2;
|
|
else
|
|
cost := 0;
|
|
if (cost > 0) then begin
|
|
ap := get_critter_current_ap(critter);
|
|
if (ap >= ITEM_USE_COST) then begin
|
|
set_critter_current_ap(critter, ap - cost);
|
|
end else begin
|
|
if (cost < ITEM_USE_COST) then
|
|
set_critter_current_ap(critter, ap + ITEM_USE_COST - cost);
|
|
set_sfall_return(0);
|
|
end
|
|
end
|
|
end
|
|
last_used_item := 0;
|
|
end
|
|
|
|
procedure start begin
|
|
if game_loaded then begin
|
|
// if you only want to reduce AP when using stuff from inventory by 2,
|
|
// comment out following line and change ITEM_USE_COST to 2
|
|
register_hook_proc(HOOK_CALCAPCOST, apcost_handler);
|
|
register_hook_proc(HOOK_USEOBJON, useobjon_handler);
|
|
end
|
|
end
|
|
|