Fallout 2 mod Economy and Combat Rebalance mod

Discussion in 'Fallout General Modding' started by phobos2077, Oct 3, 2010.

  1. KL1

    KL1 Psyker

    24
    Mar 23, 2016
    The existing systems works fine with the present items. I'm questioning whether it will work with more advanced items, though. Take HPA or APA MKII for examples, it would seems strange if the same NPC teacher who teaches you beginner level armor was to also teach you those advanced techniques for armor that you don't even have yet. It would work only if you can add a certain 'check' before they appear in the crafting categories, like maybe a level check or if certain locations are discovered like for example they appear only when PC enters Military Base/Navarro.

    About the Fuel ammo, here's an idea. It is possible to just delete them as items from the game and then re-create 2 identical items in their place like the new Bozar ammo for example?
     
  2. J_Fred

    J_Fred Long time lurker

    286
    Dec 22, 2013
    Just going to drop in again and say how bad ass this mod is. I'm doing my yearly playthrough of Fallout 2, and this mod is now a necessity for me. The crafting, the traps, the barter, the extra weapons... just amazing.


    However, phobos, I've noticed something a bit strange (though certainly not gamebreaking). When I put on the mirrored shades (+1 CHA), my barter and speech go up, but so do the prices I pay! Not by much, but a stack of .44 ammo was 425 caps without the glasses, and 428 with. I tried a few times, and other items go up as well. I have ~80 barter and 6 CHA (with shades, 76 and 5 without).

    What do you think it could be? My prices should go down with barter, right? I know you used a non-linear barter function (log or arc tangent, IIRC), but it should be strictly decreasing in barter, right? Just something weird. It's by no means game breaking, and it could be the RP or my own mods conflicting with it.

    Once again, this mod is awesome Phobos. Just wanted your opinion on this.
     
    • [Like] [Like] x 1
  3. J_Fred

    J_Fred Long time lurker

    286
    Dec 22, 2013
    Ahh, one more thing...

    Where in the hell do I find the teacher for electronics? I knew at one time, but on this playthrough I can't for the life of me figure it out. Vic suggests to go to Vault City. I've checked the computers in the vault, talked to Val, she didn't teach me anything (though it the prompt said I learned something, go figure). I don't know who else would teach me? Thanks!

    edit- found it. Vault 15 computer. Sneaky!
     
    Last edited: Jun 13, 2016
    • [Like] [Like] x 1
  4. Gwydion25

    Gwydion25 First time out of the vault

    2
    Jun 17, 2016
    Hi! I'm trying to play my 2nd playthrough with your mod but there is some complications regarding entering different cities. It's all black and I can't leave. I made sure that Restoration Project 2.3.3 was installed first before your mod or is it the other way around? Please help I'm dying of excitement. :wiggle:
     
  5. Gwydion25

    Gwydion25 First time out of the vault

    2
    Jun 17, 2016
    Nevermind. I manage to run the game by setting the "Proto folder" to read-only. Took me a whole day to figure this out. Great mod by the way! :aiee:
     
  6. burn

    burn A Smooth-Skin
    Modder

    624
    Apr 22, 2012
    Here are lockpicks recipes:

    Code:
    {4100}{}{[ITEM]}
    {4101}{}{84}  # PID_LOCKPICKS
    {4102}{}{pcx/items/lockpick.pcx}  # in-game image
    {4103}{}{91063}  # image width * 1000 + height
    {4104}{}{}  # no schematic
    {4105}{}{72000}  # 2 h 00 m
    {4106}{}{NO}
    {4107}{}{11}  # Misc
    {4108}{}{[TOOLS]}
    {4109}{}{75|308}  # PID_MULTI_TOOL | PID_SUPER_TOOL_KIT
    {4110}{}{[SKILLS]}
    {4111}{}{REPAIR:45}
    {4112}{}{LOCKPICK:45}
    {4113}{}{[COMPONENTS]}
    {4114}{}{98:1}  # Junk
    
    {4200}{}{[ITEM]}
    {4201}{}{410}  # PID_EXPANDED_LOCKPICKS
    {4202}{}{pcx/items/lockpick2.pcx}  # in-game image
    {4203}{}{75044}  # image width * 1000 + height
    {4204}{}{}  # no schematic
    {4205}{}{144000}  # 4 h 00 m
    {4206}{}{NO}
    {4207}{}{11}  # Misc
    {4208}{}{[TOOLS]}
    {4209}{}{308}  # PID_SUPER_TOOL_KIT
    {4210}{}{[SKILLS]}
    {4211}{}{REPAIR:65}
    {4212}{}{LOCKPICK:55}
    {4213}{}{[COMPONENTS]}
    {4214}{}{84:1}  # Lockpicks
    {4215}{}{98:2}  # Junk
    

    In fact, pretty much all standard weapon upgrades could be added to the crafting system, if someone wanted to expand it.

    BTW, for anyone doing PCX: background color hex code is 282828
     

    Attached Files:

    Last edited: Jul 5, 2016
    • [Like] [Like] x 1
  7. BreakinBenny

    BreakinBenny First time out of the vault

    75
    Jun 18, 2015
    Small question, is it possible to expand this into the unofficial patch as well?
     
  8. burn

    burn A Smooth-Skin
    Modder

    624
    Apr 22, 2012
    M79 inventory image is a bit big, can't see how many AP does it take to shoot.
     
  9. burn

    burn A Smooth-Skin
    Modder

    624
    Apr 22, 2012
    Seems that "Switch ammo" party order doesn't work in combat. I think that could be useful.
     
  10. burn

    burn A Smooth-Skin
    Modder

    624
    Apr 22, 2012
    Crafting window could probably use some intermidiate options between "Make 1" and "Make all". 5, 10, 20, etc.


    And, those Morton brothers are really a bitch. The only way to get through those encounters without losses is to have power armor. I guess the dude alone could survive on Psycho, but NPCs get shredded to pieces.
     
    Last edited: Jul 5, 2016
    • [Like] [Like] x 1
  11. Daemonjax

    Daemonjax First time out of the vault

    19
    Jul 5, 2016
    So I installed your mod and I'm digging it so far. No bugs encountered.

    Initial thoughts:

    1) I find myself just not buying or selling anything from anyone (I intentionally didn't tag barter), which is fine I guess. Tagging barter and pumping it to 100 brings prices into the reasonable realm, which is fine.

    2) The crafting recipes seem useless, but maybe that changes as I get further into the game (I just finished the Den). Maybe if the costs of the components were lower, I'd consider making some of it (even rope is too expensive to buy when I see it). I look at the recipes, and the costs of the components without barter tagged, and I think: "Not worth it." I think it would play out better if the components were very cheap, but crafting useful things required tagging and pumping other skills (like taps, I suppose). Just use traps as generic crafting skill and ditch the repair requirement since Vic takes care of that anyways. Having to tag + pump up Traps is as balanced as you're going to get. I dunno, but for now I'm just going to see how this goes plays out the way it is. EDIT: It looks like it's worth using if you find the components and want to make things out of it you actually want to use -- but not to sell, unless you pump up your barter skill maybe. If that was the goal, then that's cool. I haven't seen anything that makes me want to tag traps or repair instead of something else, though.

    3) I like what you did with throwing, EDIT: Woops, forgot flares are different in fallout 2... you can't aim them (or it was "fixed" in some unofficial patch I have installed now). Disregard the rest! haha ... but I don't think people realize just how broken op throwing really is and was because of flares. Flares only cost 1 AP to throw. The fact that they do only 1 damage doesn't matter because with finesse (10%) + aimed shots to the eyes (60%) + 10 luck (10%)+ 3 levels of more criticals (15%) you have 2ap (because using aimed shots) ranged attacks that have a 95% chance to crit, and with better criticals, you have a 20% chance of outright killing anything on each throw. Not to mention grenades, which are decent (but not so decent with finesse because it adds 30% DR to enemies even when using grenades which can never crit). Really the more criticals are just gravy. 80% to crit is usually good enough. So, really, even if your mod added 5% more damage per percentage of throw, it wouldn't be overpowered compared to throwing flares at eyes. I almost forgot to mention they have the accurate weapon trait. So, I recommend upping the AP cost of un-burning and burnt-out flares to 2ap (and also remove their accurate trait). Leave the OPness of burning flares (and change their damage type to fire for the lols) since they eventually burn out, and then balance your throwing damage bonus and thrown weapon AP around around that to keep every other weapon competitive. The fact that things are broken op if you build your character that way isn't a problem... it's only a problem when things are op without spending perks/traits/many skill points. You'll need to drop the AP on them some and set the damage bonus to 3%. Also increase the throwing range on throwing knives and throwing axes to something closer to 30.

    4) This only touches on this mod tangentially, but I noticed steal is way overpowered even without any points spent in it. I don't know if it's always been that way in fallout 2, or if sfall touched the engine's formula, or maybe someone changed the size field for the items in the proto files, but stealing is way too easy even at 27% skill. I succeed like 80% of the time on stacks of golden gecko hides, kinda defeating the point of the economy balance of the mod. My personal solution was to modify all the sizes of the items to be between 15 and 100:
    a) weight 0: size = 5
    b) weight 1 - 4: size = weight * 15
    c) weight 5+: size = 100
    At 15 (for ammo for example), it required too much save scumming to steal stuff without putting some points into it (I also set everything with weight of 0 to have a size of just 5). I also set all drugs to have a weight of at least 1. So stuff with really high weights would require getting the pickpocket perk (which I personally changed to being a level 3 perk)... that's about as balanced as steal is going to get. Note: if increasing sizes of items then the max size of all containers need to be increased as well.
    5) I like what you did with sneak because normally points spent past 100 were a waste. So, I can set it to give bonus to crit chance past 100 (100% crit chance at 300 skill). Sneak 100 is already pretty damn powerful, but now it might be worth tagging.

    EDIT: The sneak attack bonus crit chance seems to work just for the first round of combat. Which is fair enough. I'll probably use these settings then:

    sneak_attack_min_skill=101
    ; max skill at wich you get 100% critical
    sneak_attack_max_skill=150

    That might make stealth worth tagging because at 150 I wouldn't need to aim my shots for the first round, which could be a significant advantage with fast enough weapons (flares!). Not sure.

    EDIT2: On second thought, it's still not worth tagging to bring it all the way to 150 just for some extra AP the first round... so, I'm going with this:

    sneak_attack_min_skill=36 ; since you start at 35 with 10 agility
    ; max skill at wich you get 100% critical
    sneak_attack_max_skill=100 ;since it'll never be worth it to go over 100

    EDIT3: The only way I'd ever tag sneak is if the silent death perk were changed to be a level 3 perk. I think I'll do that.

    EDIT4: Silent Death turns out to be a pretty shitty use of a perk even at level 3, since it doesn't stack with crits. I could modify some traits (like heavy handed adding something like 15 melee damage) to make a non-crit melee build viable if I change the fast hands trait to work with melee/unarmed. That's fine, I guess. But either the sneak attack bonus damage needs to stack with silent death (I think I'd need the uncompiled scripts) or I'd have to reduce the bonus chance to something insignificant. Otherwise, a non-crit hth/melee build becomes a very bad choice once again.

    @phobos EDIT: found the ssl files! Can we get access to the ssl script files? I want to modify sneak attack to work with silent death somehow. Anyways, I'm going to do a full playthrough without tagging barter, steal, or gambling... so I should be poor the whole game if I don't put points into them, right?

    EDIT 5 and 6: error in mod.h (updated after double-checking the PID numbers -- under 15 doesn't match the file numbers, which is weird but correct):
    #define is_club_weapon_pid(x) ((x== 5) or (x==20) or (x==384) or (x==386))
    #define is_club_weapon(x) is_club_weapon_pid(obj_pid(x))

    // is weapon hammer-like --
    #define is_hammer_weapon_pid(x) ((x==6) or (x==115))
    #define is_hammer_weapon(x) is_hammer_weapon_pid(obj_pid(x))

    ... is_club_weapon_pid was in both places, so it skipped checking hammers in hs_combatdamage.

    EDIT7: So, here's what I did to integrate silent death into the whole sneak attack thing:

    mod.h defines:
    Code:
    #define is_small_gun_pid(x)    ((x==241) or (x==313) or (x==398) or (x==18) or (x==404) or (x==122) or (x==8) or (x==22) or (x==388) or  (x==394) or (x==300) or (x==332) or (x==283) or (x==9) or (x==296) or (x==23) or (x==405) or (x==353) or (x==351) or (x==403) or (x==500) or (x==352) or (x==391) or (x==299) or (x==261) or (x==161) or (x==162) or (x==10) or (x==287) or (x==143) or (x==392) or (x==385) or (x==94) or (x==242) or (x==268) or (x==354))
    #define is_small_gun(x) is_small_gun_pid(obj_pid(x))
         
    #define is_big_gun_pid(x)  ((x==355) or (x==350) or (x==387) or (x==12) or (x==389) or (x==395) or (x==11) or (x==400) or (x==13) or (x==575) or (x==630))
    #define is_big_gun(x) is_big_gun_pid(obj_pid(x))
             
    #define is_energy_gun_pid(x) ((x==16) or (x==402) or (x==393) or (x==390) or (x==24) or (x==406) or (x==396) or (x==120) or (x==28) or (x==118) or (x==401) or (x==15) or (x==233) or (x==397))
    #define is_energy_gun(x) is_energy_gun_pid(obj_pid(x))
             
    #define is_grenade_pid(x)   ((x==25) or (x==26) or (x==27) or (x==421) or (x==159) or (x==613))
    #define is_grenade(x) is_grenade_pid(obj_pid(x))
    
    #define is_sharp_thrown_pid(x) ((x==45) or (x==365))
    

    hs_afterroll.ssh
    Code:
    procedure start;
    #include ".\headers\define_lite.h"
    #include ".\headers\lib.arrays.h"
    #include ".\headers\mod.h"
    
    /**
        Runs after fallout has decided if an attack will hit or miss
    
        int     arg1 - If the attack will hit. (0 - critical miss, 1 - miss, 2 - hit, 3 - critical hit)
        critter arg2 - The attacker
        critter arg3 - The target of the attack
        int     arg4 - The bodypart
        int     arg5 - The hit chance
    
        int     ret1 - Override the hit/miss
        int     ret2 - Override the targeted bodypart
        critter ret3 - Override the target of the attack
    */
    
    export variable pbs_last_hit_roll_result; //dj note: I don't know where this is actually used
    export variable dj_dude_last_hit_roll_result; // dj: added -- this one is only for dude_obj, just to be sure
    export variable dj_dude_last_hit_was_sneak_attack := 0; // dj: added
    export variable dj_set_who_see_dude; //dj: change to exported
    
    variable begin
        ini_sneak_attack;
        ini_sneak_attack_min_skill;
        ini_sneak_attack_max_skill;
    end
    
    procedure start begin
        variable willHit;
        variable attacker;
        variable target;
        variable bodyPart;
        variable hitChance;
        variable wpn, i;
        variable skill;
        variable damageType;
        //variable agility;
        //variable attackTypes_8;
        //variable attackTypes;
        //variable bonusDamage;
    
    
        if (init_hook) then begin
            ini_sneak_attack := atoi(get_ini_string("combat.ini|STEALTH|sneak_attack"));
            ini_sneak_attack_min_skill := atoi(get_ini_string("combat.ini|STEALTH|sneak_attack_min_skill"));
            ini_sneak_attack_max_skill := atoi(get_ini_string("combat.ini|STEALTH|sneak_attack_max_skill"));
    
            dj_set_who_see_dude := load_create_array(ARR_CRITTERS_SEE_DUDE, 0);
    
        end else begin
            willHit   := get_sfall_arg;
            attacker  := get_sfall_arg;
            target    := get_sfall_arg;
            bodyPart  := get_sfall_arg;
            hitChance := get_sfall_arg;
    
            pbs_last_hit_roll_result := willHit;
    
            if (target and attacker) then begin
                //display_array(pbs_set_who_see_dude);
                //debug_msg("afterhitroll: "+willHit+" chance="+hitChance+"%% t="+target+" type="+obj_type(target)+" tpid="+obj_pid(target));
                // for Molotov:
               if (obj_type(target) == OBJ_TYPE_CRITTER and (willHit == 2 or willHit == 3)) then begin
                   damageType := DMG_fire;
               end else begin
                   damageType := DMG_explosion;
                   set_proto_data(PID_MOLOTOV_COCKTAIL, 48, damageType);
               end //end Molotov code
    
               // fix for grenade launcher, this is required because one weapon has different damage types!
               if (damageType == DMG_fire) then begin
                   damageType := DMG_explosion;
                     for (i:=1; i<=2; i++) begin
                        wpn := critter_inven_obj(attacker, i);
                        if (wpn) then begin
                            if (get_weapon_ammo_pid(wpn) == PID_PBS_40MM_IC) then begin
                                damageType := DMG_fire;
                            end
                        end
                    end
                end
    
                set_proto_data(PID_PBS_M79, 48, damageType);
                set_proto_data(PID_PBS_MGL, 48, damageType);          
    
                // sneak attack stuff
                if (attacker == dude_obj) then begin
                    dj_dude_last_hit_was_sneak_attack := 0; //DJ: exported so this info can be used in hs_combatdamage hook script
                    dj_dude_last_hit_roll_result := willHit; //DJ: exported so this info can be used in hs_combatdamage hook script
                   if (has_trait(TRAIT_PERK, dude_obj, PERK_silent_death)) then begin
                       if (ini_sneak_attack and obj_type(target) == OBJ_TYPE_CRITTER) then begin
                           skill := has_skill(attacker, SKILL_SNEAK);   
                            if ((willHit == 2) and using_skill(attacker, SKILL_SNEAK) //DJ: Fixed -- don't do anything if it was already a crit!
                            and random(ini_sneak_attack_min_skill,ini_sneak_attack_max_skill) < skill) then begin
                               //display_array(dj_set_who_see_dude); //DJ: debug message used to verify export works both ways (it does!)
                               if (not(is_in_array(target, dj_set_who_see_dude))) then begin //DJ: exported so this info can be used in hs_combatdamage hook script
                                   // DJ: Sneak attack!  Upgrade normal hit to critical
                                   dj_dude_last_hit_was_sneak_attack := 1;
                                   dj_dude_last_hit_roll_result := 3;       
                                   //display_msg(combat_mstr(5001));                               
                                   set_sfall_return(3);
                                end
                            end                         
                       end
                   end
                end //end of: (attacker == dude_obj)
    
            end // end of: (target and attacker)
        end // end of: if (init_hook) then begin + end else begin
    end
    

    hs_combatdamage.ssl
    Code:
    
    procedure start;
    //#include "..\headers\ITEMPID.H"
    //#include "..\headers\SCENEPID.H"
    #include ".\headers\sfall.h"
    #include ".\headers\DEFINE_lite.H"
    #include ".\headers\mod.h"
    #include ".\headers\lib.arrays.h"
    
    #define ATTACK_TYPE_THROW 5
    #define BODYPART_HEAD 0
    #define BODYPART_LEFT_ARM 1
    #define BODYPART_RIGHT_ARM 2
    #define ITEMTYPE_WEAPON (3)
    
    /**
        Runs whenever the target takes damage in combat. Does not run for misses, or on extra targets when bursting.
    
        critter arg1 - The target
        critter arg2 - The attacker
        int     arg3 - The amount of damage to the target
        int     arg4 - The amount of damage to the attacker
        int     arg5 - The special effect flags for the target
        int     arg6 - The special effect flags for the attacker
        int     arg7 - The weapon used in the attack
        int     arg8 - The bodypart that was struck
    
        int     ret1 - The damage to the target
        int     ret1 - The damage to the attacker
        int     ret1 - The special effect flags for the target
        int     ret1 - The special effect flags for the attacker
    */
    
    variable begin
        ini_knockout;
        ini_knockout_min_skill;
        ini_knockout_max_skill;
    end
    
    import variable dj_dude_last_hit_roll_result;
    import variable dj_dude_last_hit_was_sneak_attack;
    import variable dj_set_who_see_dude;
    
    procedure start begin
        variable target;
        variable attacker;
        variable target_damage;
        variable attacker_damage;
        variable target_flags;
        variable attacker_flags;
        variable weapon;
        variable body_part;
        variable skill;
        variable weaponPid;
        variable stealth_weapon;
    
        if (init_hook) then begin
            ini_knockout := atoi(get_ini_string("combat.ini|STEALTH|knockout"));
            ini_knockout_min_skill := atoi(get_ini_string("combat.ini|STEALTH|knockout_min_skill"));
            ini_knockout_max_skill := atoi(get_ini_string("combat.ini|STEALTH|knockout_max_skill"));
        end
        else begin
            target := get_sfall_arg;
            attacker := get_sfall_arg;
            target_damage := get_sfall_arg;
            attacker_damage := get_sfall_arg;
            target_flags := get_sfall_arg;
            attacker_flags := get_sfall_arg;
            weapon := get_sfall_arg;
            body_part := get_sfall_arg;
    
            if (target and attacker) then begin     
               if (weapon) then weaponPid := obj_pid(weapon);
               //display_msg("weaponPID: " + weaponPid); //debug message
                if (obj_type(target) == OBJ_TYPE_CRITTER) then begin 
                    //debug_msg("combatdamage: "+target+" (type:"+obj_type(target)+"), wpn: "+weaponPid+", flags: "+target_flags+", part: "+body_part);
                    if (attacker == dude_obj and has_trait(TRAIT_PERK, dude_obj, PERK_silent_death)) then begin             
                       if (using_skill(attacker, SKILL_SNEAK) and attacker_behind_target(attacker, target)) then begin         
                           if (is_small_gun_pid(weaponPid) or is_big_gun_pid(weaponPid)
                           or is_energy_gun_pid(weaponPid) or is_grenade_pid(weaponPid)) then begin
                               stealth_weapon := 0;
                           end         
                           else begin
                               stealth_weapon := 1;
                           end
                           if (dj_dude_last_hit_roll_result == 3) then begin
                               if (stealth_weapon) then begin
                                   target_damage := target_damage * 2;    //DJ: so silent death works with crits
                                   if (dj_dude_last_hit_was_sneak_attack) then begin
                                       display_msg("Silent Death sneak attack!");                                         
                                   end else begin
                                       display_msg("Silent Death!");                                         
                                   end
                               end
                               else if (dj_dude_last_hit_was_sneak_attack) then begin //is using stealth weapon and it's a crit              
                                   call add_array_set(dj_set_who_see_dude, target);
                                   //display_msg("debug: added " + target);
                                end
                           end
                           else if (dj_dude_last_hit_roll_result == 2) then begin
                               if (stealth_weapon) then display_msg("Silent Death!"); //DJ: Normally there's no feedback
                               if (weaponPid) then begin         
                                   if (is_sharp_thrown_pid(weaponPid)) then begin
                                       target_damage := target_damage * 2;    //silent death already handles melee/unarmed on non-crits                 
                                    end              
                                    else if (ini_knockout
                                    and (body_part == BODYPART_HEAD)
                                    and is_human(target)
                                    and (is_club_weapon_pid(weaponPid) or is_hammer_weapon_pid(weaponPid))
                                    and not ((target_flags bwand DAM_KNOCKED_OUT) == DAM_KNOCKED_OUT)) then begin //dj: prevent multiple triggering of stealth knockout
                                        //knockout people, hitting them in head with a club from behind
                                       skill := has_skill(attacker, SKILL_SNEAK);
                                       if (random(ini_knockout_min_skill, ini_knockout_max_skill) < skill) then begin
                                           target_flags := target_flags bwor DAM_CRITICAL bwor DAM_KNOCKED_OUT;
                                           display_msg("Stealth knockout!");
                                       end
                                   end                                                                             
                               end // end of: weaponPid)
                           end    // end of: dj_dude_last_hit_roll_result == 3) + else if ((dj_dude_last_hit_roll_result == 2) 
                       end // end of: (using_skill(attacker, SKILL_SNEAK) and attacker_behind_target(attacker, target))
                   end // end of: if (attacker == dude_obj and has_trait(TRAIT_PERK, dude_obj, PERK_silent_death))
         
                   //taser stuff
                    if (weaponPid == PID_PBS_TASER) then begin
                        if ((is_human(target) or is_animal(target)) and get_critter_stat(target, STAT_dmg_thresh_electrical) < 10) then begin
                            target_flags := target_flags bwor DAM_LOSE_TURN;
                            if (random(0,99) < (110 - (10 * get_critter_stat(target, STAT_en)))) then begin
                                target_flags := target_flags bwor DAM_CRITICAL bwor DAM_KNOCKED_DOWN;
                            end
                        end
                    end    //end of: (weaponPid == PID_PBS_TASER)
                end // end of: (obj_type(target) == OBJ_TYPE_CRITTER)
            end // end of: (target and attacker)
    
            //debug_msg("combatdamage after, target was "+target);
    
            set_sfall_return(target_damage);
            set_sfall_return(attacker_damage);
            set_sfall_return(target_flags);
            set_sfall_return(attacker_flags);
        end
    end
    

    What I like about this is that it makes silent death worth taking, and I made it work with thrown weapons... and crits for melee/unarmed/pure thrown (except grenades). But, if you use a non-stealthy weapon (like a gun), then a sneak attack is still possible but only once (it then adds the target to the array). The array should essentially be cleared whenever you leave combat, though. Something left to do -- just not sure how to do it. I might have to move the array export to another script (hs_mouseclick or dube_obj should work). What's the best way to remove all elements from an array? Free and create it again, or just resize it to 0? There's no array_clear(...) afaik. I'm not even sure what's a good way to detect the first round of combat or even when combat is over.
     
    Last edited: Jul 16, 2016
    • [Like] [Like] x 1
  12. kordi

    kordi First time out of the vault

    9
    Aug 23, 2016
    Hi,

    I found the mod recently. Absolutely love the idea. However, I kinda hate changes to AP on pistol, turbo plasma (and removal of bonus rate of fire as a consequnece). IMO this has a undesired effect of pistols being too good and fast shot being just too obvious choice to pick as a trait. Changes on range are not enough to compensate IMO especially once you get to end game with sniper. Character has a choice of max 2 aimed rifle shots per turn vs. up to 4 pistol/turbo plasma normal shots (5 with some extreme character configuration and extreme drug use).

    Is there any way to make pistols modyfing mod files as they were in Vanilla game?

    Unfortunately this opiton does not seem to be possible to turn off in the installation menu.
     
  13. J_Fred

    J_Fred Long time lurker

    286
    Dec 22, 2013
    Yes, it's really easy to mod items into crafting. I've added most upgraded armors, numerous weapons, and a few different ammo types. It makes the crafting so amazing. The only issue is that it gets over powered if you have Vic and Myron, since their repair/science skills are over 100 once fully leveled.


    You can just use F2wedit to change anything about the weapons you want (AP cost, range, damage, cost, weight, ammo type... anything really). Put it in your main Fallout2 folder and edit away. I would make a backup of the proto files just in case though.
     
  14. burn

    burn A Smooth-Skin
    Modder

    624
    Apr 22, 2012
    I tried to send a pull with lockpicks on github, but it seems test0.msg isn't included in the sources. Is that intentional?
     
  15. kordi

    kordi First time out of the vault

    9
    Aug 23, 2016
    [QUOTE="J
    You can just use F2wedit to change anything about the weapons you want (AP cost, range, damage, cost, weight, ammo type... anything really). Put it in your main Fallout2 folder and edit away. I would make a backup of the proto files just in case though.[/QUOTE]

    I came to terms with the change and I am already half way through. In the end it is not that important of a change for someone who knows the game inside out. I later realized that you made plasma rifle accessible much later and that changes to economy and that economy makes acquiring good weapons more diificult. Ergo it does not make that big of a deal. I think that in the end I even came to like this change ;).
     
  16. J_Fred

    J_Fred Long time lurker

    286
    Dec 22, 2013
    Phobos,

    I'm trying to add some items to the vendors, but notice the scripts for their appropriate item boxes are a bit different than vanilla formulas.

    Say I wanted to add an item to Flick's stock in the Den, usually I would just add the line:

    check_restock_item(itemPID, 1, 2, 100)

    Below the restock call.

    However, I don't find this in the script for Tubby's inventory (ditubbox.int). I admit I'm very much a novice, but was wondering if you could point me in the right direction so that I may add items to the vendors while using your mod.


    Thanks! Loving the mod, as always.
     
  17. kordi

    kordi First time out of the vault

    9
    Aug 23, 2016
    I am finishing the game with the mod installed. I must say I kinda enjoyed. However I have a few suggestions. However, please bear in mind that my observations are biased by how I play the game. I always Ironman with permadeath (and I am adamant about it) and I like to keep companions in my party to add variaty to gameplay (which might not always be optimal for ironmaning)

    1. Mod felt a little "grindy" at times.
    Due to changes to barter prices I had to spend more time selling useless junk, to get things I wanted (mostly drugs). I think that lowering the price for drugs somewhat might be something worth considering. Just for the sake of convenience. When Ironmaning use of drugs is almost unavoidable. With changes to how ammo and guns applied by the mod this is even more true i.e. most early game thugs can shoot now twice with pistols. Without psycho it is almost impossible to survive any encounter etc.

    2. There should be added some powerful single shot rifle to the game other than Gauss.
    This is with the sole purpose of equiping NPCs with it. The mod made Cassidy one of the most usless NPCs while elevating Sulik to probably be the best (at least for 80% of the game). The problem with Cassidy now is that I cannot give him any burst weapon i.e. FN FAL as he is likely to kill some of my other companions with it or me. I can give him sniper rifle to shoot once, but sniper now has low range penalties and companion AI is unable to take this into account (and switching Cassidy to snipe the enemy is an overall bad idea since I need my companions close to me to be able to heal them). The best I can give him is normal shotgun or hunting rifle which he will be able to fire once (as he cannot use drugs for the most of the game). In vanila there is Red Ryder Le BB that he can fire twice, but this is not true in the mod. Late game I cannot give him Gauss as ammo is so severly limited that you simply cannot afford to give him Gauss.... at the same time he cannot even use 14mm pistols (which are one of the best mid game weapon in the mod). He is stuck with hunting rifle for the entire game. Most of this is true for VIC as well BUT VIC can use drugs meaning 2 shots and not one. Also late game he can use Laser rifle which keeps his usefulness.

    3. 14mm pistol vs. .233 pistol
    I understand the reasoning for changes for those two pistols but the end result is that .223 pistol now is almost useless. 14mm pistol is now a GREAT weapon, like really great. For 80% of the game it ignores all armor. Sulik and Lenny simply wreak havoc with it (and ammo is cheap). .233 pistol you get very very late into the game now. At that point in time all the enemies you encounter are heavily armored. .223 pistol does more damage on unarmored targets but on armored ones it deals more or less same as 14mm pistol. With the .223 AP ammo (craftable), it does slightly more but the difference is difficult to even notice. Ergo .233 pistol comes into play way too late to make any difference for your NPCs. 14mm you can get rather early in the game (Redding or Gecko) and basically it can well be your NPC go to weapon for most of the game. Please note that this is somewhat biased again by my playstyle. Since I am ironmanning I want to delay Valut 15 encounter as long as possible as it is kinda dangerous. This means that .233 pistol I get really late. I also avoid things like going straight to San Fran, since it spoils any kind of challange....
     
    Last edited: Sep 21, 2016
  18. burn

    burn A Smooth-Skin
    Modder

    624
    Apr 22, 2012
    @kordi, some points regarding 2):
    - there's bozar (although it's even more rare)
    - I think you're mistaken about sniper rifle. It doesn't have close range penalties.
    - and lastly, for the solution of the burst problem - check out my mod
     
  19. kordi

    kordi First time out of the vault

    9
    Aug 23, 2016
    - I believe that Cassidy cannot use Bozar. Can he? However, even if he can Ammo is as rare as Gauss. So it does not help in this regards.
    - I am 99,5% certain that in the Ecco mod sniper rifle has short range penalties. I know that in vanilla it does not but in the Ecco mod it has. (which kinda makes sense)
    - Is it possible to combine your mod with Ecco Mod? Won't it cause problems?
     
  20. burn

    burn A Smooth-Skin
    Modder

    624
    Apr 22, 2012
    With Ecco, bozar is just another rifle, so why not. Not sure where did you get that info about penalties, but you can check the actual item with f2wedit. Yes, my mod is (supposed to be) compatible with Ecco, or just about any other mod.