mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
Added full ddraw.ini + other config files and all relevant artifacts from latest modderspack.
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user