baturinsky
Arcane
No general mechanics for assassination.So besides two mechanics for assassination, there are no mechanics for assassination. Got it.
No general mechanics for assassination.So besides two mechanics for assassination, there are no mechanics for assassination. Got it.
The thing is that a lot of such stuff depends on how well do you manage to fix the rest of mechanics. Original Fallout isn't particularly strong mechanically.
TBH, I'm not really sure.The thing is that a lot of such stuff depends on how well do you manage to fix the rest of mechanics. Original Fallout isn't particularly strong mechanically.
Just curious: is there an rpg out there you consider to have particularly strong mechanics? I haven't played a lot of rpg's outside of the usual suspects, but I always felt that of those Fallout 2 was the strongest mechanically (though that might not be saying much).
The thing with Fallouts is that they aren't really conductive of interesting combat - AI is dumb, artefacts of TB are exploitable, you can't really use cover or change stance, you can't use stealth, positioning is bare bones, you just stand and shoot or run up to target and hit it. There simply isn't much tactics involved because there is no room for much tactics in this game to begin with. You just spray and pray to the RNG god for the criticals to be with you.
Lying prone inside a house should invoke pineapples/cocktails, once the AI knows where you are, or, failing that, AI attacking through more than one entrance/opening.The thing with Fallouts is that they aren't really conductive of interesting combat - AI is dumb, artefacts of TB are exploitable, you can't really use cover or change stance, you can't use stealth, positioning is bare bones, you just stand and shoot or run up to target and hit it. There simply isn't much tactics involved because there is no room for much tactics in this game to begin with. You just spray and pray to the RNG god for the criticals to be with you.
I know it's heresy, but I'm actually glad that Fallout didn't feature stance changes. Sacrificing mobility for increased defense and (often) to hit just is a nobrainer in games where mobility doesn't play the role it does IRL. Lying prone inside a house constantly shouldn't be the right tactic, but it is because the AI won't be able to handle that (maybe modern AI in shooters do, wouldn't know, but in JA2 they certainly didn't).
While many of these points do stand, I'm in a nitpicking moodThe thing with Fallouts is that they aren't really conductive of interesting combat - AI is dumb, artefacts of TB are exploitable, you can't really use cover or change stance, you can't use stealth, positioning is bare bones, you just stand and shoot or run up to target and hit it. There simply isn't much tactics involved because there is no room for much tactics in this game to begin with. You just spray and pray to the RNG god for the criticals to be with you.
Does it bear any relation to sneak skill?While many of these points do stand, I'm in a nitpicking moodThe thing with Fallouts is that they aren't really conductive of interesting combat - AI is dumb, artefacts of TB are exploitable, you can't really use cover or change stance, you can't use stealth, positioning is bare bones, you just stand and shoot or run up to target and hit it. There simply isn't much tactics involved because there is no room for much tactics in this game to begin with. You just spray and pray to the RNG god for the criticals to be with you.
You can use stealth in combat, and it'll often help you break large encounters into smaller ones. I had enemies completely ignore my character shooting their comrade standing a few hexes away from them simply because they didin't have line of sight to him (as gamebreaking as chameleon in Morrowind - i.e. delicious god mode), and in other cases you can kill one opponent, then run behind a corner and hit End Combat - and it'll work. It's not great, but you can use stealth in FO combat
I've only had it happen with characters who tagged Sneak. But perhaps somebody who knows the actual code should chime in to confirmDoes it bear any relation to sneak skill?
Because if it doesn't, it's not stealth, it's just AI hurpadurping - hardly something you'd hold in game's favour.
old:(unarmed skill attacker)-(AC target)
new:(has_skill(attacker, SKILL_UNARMED_COMBAT))+targetexhaustion+attackerkamikaze+targetkamikaze+onehander-cripplepen-bodypen-attackerexhaustion-(has_skill(attacker, SKILL_UNARMED_COMBAT)-100)-(get_critter_stat(target, STAT_ag)*agilitymod)-(get_critter_stat(target, STAT_pe))
new:(has_skill(attacker, SKILL_SMALL_GUNS))+targetexhaustion+attackerkamikaze+targetkamikaze+onehander-bodypen-attackerexhaustion-(get_critter_stat(target, STAT_ag)*agilitymod)+(get_critter_stat(attacker, STAT_pe)) - (strengthpen)
minstrength:=(weaponweight/4)+recoil-((has_trait(TRAIT_PERK, attacker, PERK_weapon_handling_perk) > 0)*3);
strengthpen:=((minstrength)-(get_critter_stat(attacker, STAT_st)))* (4+(exhaustion/4));
(hexes)*((10+lightmod)-perceptionmod);
(CRITCHANCE + ((TOHIT−RND(1,100))/10))%
(CRITCHANCE + ((TOHIT−RND(1,100))/10))%
if (get_sfall_global_int("weaponty") == small_arms_type) then begin
if random(1,1000) > (get_critter_stat(attacker, STAT_pe)*10) + (has_skill(attacker, SKILL_REPAIR)) + (has_skill(attacker, SKILL_SMALL_GUNS)*2) then begin
if random(1,100) > 65 + (get_critter_stat(attacker, STAT_lu)*3) then begin
hit:=0;
end
end
end
else if (bodypart==eyes) then begin
roll:=random(1,99);
if (roll < (10 + (n*7))) then begin
bodypart := eyes;
end else if (roll < (50 + (n*7))) then begin
bodypart := head;
end else if (roll < (80 + (n*7))) then begin
bodypart := torso;
end else if (roll < (90 + (n*7))) then begin
bodypart := random(left_arm,right_arm);
end else begin
bodypart := random(left_arm,right_arm);
end
end
#define normal(x) (-3 + (has_skill(x, SKILL_REPAIR)/50))
#define laser(x) (-5 + (has_skill(x, SKILL_REPAIR)/50) + (has_skill(x, SKILL_SCIENCE)/50))
#define plasma(x) (-5 + (has_skill(x, SKILL_REPAIR)/50) + (has_skill(x, SKILL_SCIENCE)/50))
#define explosion(x) (-5 + (has_skill(x, SKILL_REPAIR)/50) + (has_skill(x, SKILL_TRAPS)/50))
#define electrical(x) (-5 + (has_skill(x, SKILL_REPAIR)/50) + (has_skill(x, SKILL_SCIENCE)/50))
#define fire(x) (-5 + (has_skill(x, SKILL_REPAIR)/50) + (has_skill(x, SKILL_TRAPS)/50))
{142}{}{[Panic suddenly takes a hold of you, and your legs momentarily feel like they are made of lead.]}
{143}{}{[Panic suddenly hits you, and steadying your hands becomes almost impossible.]}
{144}{}{[You're suddenly overcome with fear of the enemy, and convincing yourself to attack would take more effort than ever.]}
{313}{}{. I have the honor of being your final challenge. My task is to first test your resolve, then your physical prowess.}
{314}{}{Listen, me standing here covered in giant ant-entrails or whatever the hell this purple stuff is should be proof enough of my resolve, buddy, so you can just skip that part right away.}
{315}{}{How do you plan on testing my resolve?}
{316}{}{Re...solve?}
{317}{}{Just one simple question. This village has shielded you all your life from the horrors of the wasteland; but soon you will have to face these horrors head on. How do you plan on coping with this?}
{318}{}{I'll probably have some liquid resolve now and then to steady the nerves. But if the Elder asks, tell her I said something about the plight of the village, or whatever.}
{319}{}{My resolve will not falter because I will know that my cause is just.}
{320}{}{Let's just say that I'll make sure that these horrors befall others, not me.}
{321}{}{I'll cope just fine, now get to the last part already.}
{322}{}{[Your venomous breath tells Cameron all he needs to know.]}
{323}{}{Me know good.}
{324}{}{Maybe me horror.}
{326}{}{Muh. [You can't help but wonder whether you couldn't have been more eloquent there.]}
{325}{}{Very well. As to your final challenge, to continue in your quest you must defeat me in unarmed combat. Shall we begin?}
procedure start;
#include "C:\Program Files (x86)\GOG.com\Fallout 2 Mapper\scripts\HEADERS\sfall.h"
#include "C:\Program Files (x86)\GOG.com\Fallout 2 Mapper\scripts\HEADERS\define.h"
#include "C:\Program Files (x86)\GOG.com\Fallout 2 Mapper\scripts\HEADERS\command.h"
procedure start begin
variable critter;
variable container;
variable n;
variable amount;
if game_loaded then begin
set_global_script_type(1);
set_global_script_repeat(100);
end else begin
if get_sfall_global_int("priceset") ^ 524 then begin
n:=get_sfall_global_int("priceset");
//display_msg("GVAR SET" + get_sfall_global_int("priceset"));
if (get_sfall_global_int("priceset") == n) then begin
foreach critter in list_as_array(LIST_CRITTERS) begin
amount+=obj_is_carrying_obj_pid(critter,n);
//display_msg("amount" + amount);
end
foreach container in list_as_array(LIST_GROUNDITEMS) begin
amount+=obj_is_carrying_obj_pid(container,n);
end
if amount > 0 and not (n == 41) then begin
set_proto_data(n, 120, (pid_cost(n)/(amount)));
//display_msg("cost" + pid_cost(n));
end
amount:=0;
set_sfall_global("priceset", n+1);
//display_msg("what" + n);
end
end
end
end
(Had to change the "lesser than" symbol into ^ for the site)
You didn't really have to survive in Fallout (which deserves a special topic), but what bugged me the most was the overabundance of ammo.
So, if I was designing a Fallout-like game, I'd make melee a pretty much mandatory skill, as melee weapons are the easiest to make, find, and use. I'd make widely available guns clearly superior to melee but unreliable (high chance of misfire due to wear, tear, and poor maintenance). 30-40% chance of misfire maybe.
Then you'd have rare "mothballed" guns in mint condition and special weapons, found in pre-war facilities, sort of like +2 weapons in fantasy dungeons. Ammo is rare, so running out should be a frequent occasion. Ammo for special weapons should be extremely rare. Burst mode should be the last resort option.
In the end, a well to-do post-apoc warrior would have a mint condition magnum with 2 rounds, an old glock with 12 rounds, a well maintained hunting rifle with 5 rounds, and an assortment of melee weapons.
if get_proto_data(PID_10MM_AP, 40) != 5 then begin
set_proto_data(PID_10MM_AP, 40, 5);
end if get_proto_data(PID_10MM_JHP, 40) != 5 then begin
set_proto_data(PID_10MM_JHP, 40, 5);
end if get_proto_data(PID_5MM_JHP, 40) != 10 then begin
set_proto_data(PID_5MM_JHP, 40, 10);
end if get_proto_data(PID_5MM_AP, 40) != 10 then begin
set_proto_data(PID_5MM_AP, 40, 10);
end if get_proto_data(PID_44_MAGNUM_JHP, 40) != 4 then begin
set_proto_data(PID_44_MAGNUM_JHP, 40, 4);
end if get_proto_data(PID_44_FMJ_MAGNUM, 40) != 4 then begin
set_proto_data(PID_44_FMJ_MAGNUM, 40, 4);
end if get_proto_data(PID_223_FMJ, 40) != 10 then begin
set_proto_data(PID_223_FMJ, 40, 10);
end if get_proto_data(PID_45_CALIBER_AMMO, 40) != 5 then begin
set_proto_data(PID_45_CALIBER_AMMO, 40, 5);
end if get_proto_data(PID_2MM_EC_AMMO, 40) != 10 then begin
set_proto_data(PID_2MM_EC_AMMO, 40, 10);
end if get_proto_data(PID_4_7MM_CASELESS, 40) != 10 then begin
set_proto_data(PID_4_7MM_CASELESS, 40, 10);
end if get_proto_data(PID_7_62MM_AMMO, 40) != 10 then begin
set_proto_data(PID_7_62MM_AMMO, 40, 10);
end if get_proto_data(PID_9MM_AMMO, 40) != 5 then begin
set_proto_data(PID_9MM_AMMO, 40, 5);
end if get_proto_data(PID_9MM_BALL, 40) != 5 then begin
set_proto_data(PID_9MM_BALL, 40, 5);
end if get_proto_data(PID_14MM_AP, 40) != 6 then begin
set_proto_data(PID_14MM_AP, 40, 6);
end if get_proto_data(PID_SHOTGUN_SHELLS, 40) != 4 then begin
set_proto_data(PID_SHOTGUN_SHELLS, 40, 4);
end if get_proto_data(PID_FLAMETHROWER_FUEL, 40) != 5 then begin
set_proto_data(PID_FLAMETHROWER_FUEL, 40, 5);
end if get_proto_data(PID_FLAMETHROWER_FUEL_MK_II, 40) != 5 then begin
set_proto_data(PID_FLAMETHROWER_FUEL_MK_II, 40, 5);
end if get_proto_data(PID_HN_AP_NEEDLER_CARTRIDGE, 40) != 6 then begin
set_proto_data(PID_HN_AP_NEEDLER_CARTRIDGE, 40, 6);
end if get_proto_data(PID_HN_NEEDLER_CARTRIDGE, 40) != 6 then begin
set_proto_data(PID_HN_NEEDLER_CARTRIDGE, 40, 6);
end if get_proto_data(PID_MICRO_FUSION_CELL, 40) != 10 then begin
set_proto_data(PID_MICRO_FUSION_CELL, 40, 10);
end if get_proto_data(PID_SMALL_ENERGY_CELL, 40) != 8 then begin
set_proto_data(PID_SMALL_ENERGY_CELL, 40, 8);
end
foreach rndcritter in list_as_array(LIST_CRITTERS) begin
//display_msg("critter");
if ((proto_data(obj_pid(rndcritter),cr_fid) == FID_NMMAXX) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_NFMAXX) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_HMBMET) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_NFMETL) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_NMCOPP) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_NAVGUL) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_NAGHUL) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_NMMEXI) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_NMLTHR) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_NMGANG) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_NMRGNG) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_MAMTNT) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_MAMTN2) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_NAPOWR) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_HMMAXX) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_HFMAXX) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_HMMETL) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_HFMETL) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_HMLTHR) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_HFLTHR) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_HMCMBT) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_HFCMBT) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_HAPOWR) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_HANPWR)) and rndcritter!=dude_obj and obj_pid(rndcritter) != PID_LIL_JESUS and obj_pid(rndcritter) != PID_LOPAN and obj_pid(rndcritter) != PID_THE_DRAGON and obj_pid(rndcritter) != PID_SALVATORE_THUG_1 and obj_pid(rndcritter) != PID_SALVATORE_THUG_2 and obj_pid(rndcritter) != PID_MASON and obj_pid(rndcritter) != PID_GUN_MERCHANT and not (party_member_obj(obj_pid(rndcritter))) then begin
if (inven_count(rndcritter) > 2) and ((obj_item_subtype(inven_ptr(rndcritter, 2)) == item_type_weapon) or (obj_item_subtype(inven_ptr(rndcritter, 2)) == item_type_ammo)) then begin
item:=(inven_ptr(rndcritter, 2));
destroy_object(inven_ptr(rndcritter, 2));
if (inven_ptr(rndcritter, 2) == item) then begin
destroy_object(item);
if (inven_ptr(rndcritter, 2) == item) then begin
destroy_object(item);
if (inven_ptr(rndcritter, 2) == item) then begin
destroy_object(item);
if (inven_ptr(rndcritter, 2) == item) then begin
destroy_object(item);
if (inven_ptr(rndcritter, 2) == item) then begin
destroy_object(item);
if (inven_ptr(rndcritter, 2) == item) then begin
destroy_object(item);
if (inven_ptr(rndcritter, 2) == item) then begin
destroy_object(item);
end
end
end
end
end
end
end
end
rifle:=((proto_data(obj_pid(rndcritter),cr_fid) != FID_NMMAXX) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NFMAXX) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_HMBMET) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NFMETL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAPOWR) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAVGUL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_MAMTNT) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_MAMTN2));
pistol:=((proto_data(obj_pid(rndcritter),cr_fid) != FID_NFMAXX) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NFMETL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAPOWR) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAGHUL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_MAMTNT) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_MAMTN2));
smg:=((proto_data(obj_pid(rndcritter),cr_fid) != FID_NMMAXX) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMLTHR) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_HMBMET) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NFMETL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAPOWR) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAGHUL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_MAMTNT) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_MAMTN2));
big_gun:=((proto_data(obj_pid(rndcritter),cr_fid) != FID_NMMAXX) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NFMAXX) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_HMBMET) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NFMETL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAPOWR) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAVGUL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAGHUL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMMEXI) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMLTHR));
minigun:=((proto_data(obj_pid(rndcritter),cr_fid) != FID_NMMAXX) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NFMAXX) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_HMBMET) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NFMETL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMCOPP) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAVGUL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAGHUL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMMEXI) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMLTHR) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMGANG) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMRGNG));
rocket_launcher:=((proto_data(obj_pid(rndcritter),cr_fid) != FID_NMMAXX) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NFMAXX) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_HMBMET) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NFMETL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMCOPP) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAVGUL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAGHUL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMMEXI) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMLTHR) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMGANG) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMRGNG));
clubs:=((proto_data(obj_pid(rndcritter),cr_fid) != FID_NMMAXX) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NFMAXX) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_HMBMET) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NFMETL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMCOPP) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAVGUL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAGHUL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMMEXI) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMLTHR) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMGANG) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMRGNG) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_MAMTNT) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_MAMTN2) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAPOWR));
spear:=((proto_data(obj_pid(rndcritter),cr_fid) != FID_NMMAXX) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_HMBMET) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMCOPP) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAVGUL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMMEXI) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMGANG) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMRGNG) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_MAMTNT) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_MAMTN2) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAPOWR));
knife:=((proto_data(obj_pid(rndcritter),cr_fid) != FID_NMCOPP) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMLTHR) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_MAMTNT) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_MAMTN2) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAPOWR));
thrown:=((proto_data(obj_pid(rndcritter),cr_fid) != FID_NMMAXX) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NFMETL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NFMAXX) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMLTHR) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMLTHR) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAPOWR));
sledge:=((proto_data(obj_pid(rndcritter),cr_fid) != FID_NMMAXX) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NFMAXX) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NFMETL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMCOPP) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAVGUL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAGHUL) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMMEXI) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMLTHR) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMGANG) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NMRGNG) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_MAMTNT) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_MAMTN2) and (proto_data(obj_pid(rndcritter),cr_fid) != FID_NAPOWR));
if (( ((((cur_town == AREA_VAULT_CITY) and (cur_map_index != MAP_VAULTCITY_COURTYARD)) or (cur_town == AREA_NCR) or (cur_town == AREA_SAN_FRANCISCO))*290) + (((cur_town == AREA_NAVARRO) or (cur_town == AREA_THE_ENCLAVE) or (cur_town == AREA_MILITARY_BASE))*420) + (((cur_map_index == MAP_VAULTCITY_COURTYARD) or (cur_map_index == MAP_REDDING_WANAMINGO_ENT) or (cur_town == AREA_GECKO) or (cur_town == AREA_BROKEN_HILLS) or (cur_town == AREA_NEW_RENO) or (cur_town == AREA_VAULT_15) or (cur_town == AREA_RAIDERS) or (cur_town == AREA_RENO_STABLES))*190) + (((cur_town == AREA_DEN) or (cur_town == AREA_GHOST_TOWN) or (cur_town == AREA_MODOC) or ((cur_town == AREA_REDDING) and (cur_map_index != MAP_REDDING_WANAMINGO_ENT)))*110) + (get_proto_data(obj_pid(rndcritter), 392)/5)) > 570) then
rollmod:=570;
else
rollmod:=( ((((cur_town == AREA_VAULT_CITY) and (cur_map_index != MAP_VAULTCITY_COURTYARD)) or (cur_town == AREA_NCR) or (cur_town == AREA_SAN_FRANCISCO))*290) + (((cur_town == AREA_NAVARRO) or (cur_town == AREA_THE_ENCLAVE) or (cur_town == AREA_MILITARY_BASE))*420) + (((cur_map_index == MAP_VAULTCITY_COURTYARD) or (cur_map_index == MAP_REDDING_WANAMINGO_ENT) or (cur_town == AREA_GECKO) or (cur_town == AREA_BROKEN_HILLS) or (cur_town == AREA_NEW_RENO) or (cur_town == AREA_VAULT_15) or (cur_town == AREA_RAIDERS) or (cur_town == AREA_RENO_STABLES))*190) + (((cur_town == AREA_DEN) or (cur_town == AREA_GHOST_TOWN) or (cur_town == AREA_MODOC) or ((cur_town == AREA_REDDING) and (cur_map_index != MAP_REDDING_WANAMINGO_ENT)))*110) + (get_proto_data(obj_pid(rndcritter), 392)/5));
if (has_skill(rndcritter, SKILL_ENERGY_WEAPONS) >= has_skill(rndcritter, SKILL_MELEE)) or (has_skill(rndcritter, SKILL_BIG_GUNS) >= has_skill(rndcritter, SKILL_MELEE)) or (has_skill(rndcritter, SKILL_SMALL_GUNS) >= has_skill(rndcritter, SKILL_MELEE)) then begin
primary_roll:=random(rollmod, 150+rollmod);
if (primary_roll ^ 70) and (rifle == 1) then
primary := create_object( PID_SPRINGER_RIFLE, 0, 0 );
else if (primary_roll ^ 90) and (pistol == 1) then
primary := create_object( PID_9MM_MAUSER, 0, 0 );
else if (primary_roll ^ 170) and (pistol == 1) then
primary := create_object( PID_10MM_PISTOL, 0, 0 );
else if (primary_roll ^ 190) and (pistol == 1) then
primary := create_object( PID_44_MAGNUM_REVOLVER, 0, 0 );
else if (primary_roll ^ 205) and (pistol == 1) then
primary := create_object( PID_DESERT_EAGLE, 0, 0 );
else if (primary_roll ^ 220) and (smg == 1) then
primary := create_object( PID_14MM_PISTOL, 0, 0 );
else if (primary_roll ^ 245) and (smg == 1) then
primary := create_object( PID_10MM_SMG, 0, 0 );
else if (primary_roll ^ 265) and (rifle == 1) then
primary := create_object( PID_SHOTGUN, 0, 0 );
else if (primary_roll ^ 280) and (rifle == 1) then
primary := create_object( PID_SAWED_OFF_SHOTGUN, 0, 0 );
else if (primary_roll ^ 290) and (rifle == 1) then
primary := create_object( PID_TOMMY_GUN, 0, 0 );
else if (primary_roll ^ 305) and (smg == 1) then
primary := create_object( PID_GREASE_GUN, 0, 0 );
else if (primary_roll ^ 325) and (rifle == 1) then
primary := create_object( PID_ASSAULT_RIFLE, 0, 0 );
else if (primary_roll ^ 345) and (rifle == 1) then
primary := create_object( PID_HUNTING_RIFLE, 0, 0 );
else if (primary_roll ^ 365) and (rifle == 1) then
primary := create_object( PID_FN_FAL, 0, 0 );
else if (primary_roll ^ 375) and (smg == 1) then
primary := create_object( PID_HK_P90C, 0, 0 );
else if (primary_roll ^ 390) and (pistol == 1) then
primary := create_object( PID_NEEDLER_PISTOL, 0, 0 );
else if (primary_roll ^ 405) and (pistol == 1) and (has_skill(rndcritter, SKILL_ENERGY_WEAPONS) > 70) then
primary := create_object( PID_LASER_PISTOL, 0, 0 );
else if (primary_roll ^ 420) and (rifle == 1) then
primary := create_object( PID_COMBAT_SHOTGUN, 0, 0 );
else if (primary_roll ^ 430) and (rifle == 1) then
primary := create_object( PID_HK_CAWS, 0, 0 );
else if (primary_roll ^ 440) and (pistol == 1) and (has_skill(rndcritter, SKILL_ENERGY_WEAPONS) > 70) then
primary := create_object( PID_PLASMA_PISTOL, 0, 0 );
else if (primary_roll ^ 450) and (rifle == 1) and (get_critter_stat(rndcritter, STAT_pe) > 7) then
primary := create_object( PID_SNIPER_RIFLE, 0, 0 );
else if (primary_roll ^ 460) and (rifle == 1) then
primary := create_object( PID_PANCOR_JACKHAMMER, 0, 0 );
else if (primary_roll ^ 470) and (smg == 1) then
primary := create_object( PID_HK_G11, 0, 0 );
else if (primary_roll ^ 480) and (smg == 1) then
primary := create_object( PID_223_PISTOL, 0, 0 );
else if (primary_roll ^ 490) and (rifle == 1) then
primary := create_object( PID_INDEPENDENT, 0, 0 );
else if (primary_roll ^ 505) and (minigun == 1) and (has_skill(rndcritter, SKILL_BIG_GUNS) > 70) then
primary := create_object( PID_MINIGUN, 0, 0 );
else if (primary_roll ^ 515) and (big_gun == 1) and (has_skill(rndcritter, SKILL_BIG_GUNS) > 70) then
primary := create_object( PID_LIGHT_SUPPORT_WEAPON, 0, 0 );
else if (primary_roll ^ 525) and (big_gun == 1)and (has_skill(rndcritter, SKILL_BIG_GUNS) > 70) then
primary := create_object( PID_M60, 0, 0 );
else if (primary_roll ^ 540) and (big_gun == 1) and (has_skill(rndcritter, SKILL_BIG_GUNS) > 70) then
primary := create_object( PID_FLAMER, 0, 0 );
else if (primary_roll ^ 550) and (pistol == 1) then
primary := create_object( PID_PK12_GAUSS_PISTOL, 0, 0 );
else if (primary_roll ^ 560) and (big_gun == 1) and (has_skill(rndcritter, SKILL_BIG_GUNS) > 70) then
primary := create_object( PID_BOZAR, 0, 0 );
else if (primary_roll ^ 570) and (pistol == 1) and (has_skill(rndcritter, SKILL_ENERGY_WEAPONS) > 70) then
primary := create_object( PID_YK32_PULSE_PISTOL, 0, 0 );
else if (primary_roll ^ 585) and (minigun == 1) and (has_skill(rndcritter, SKILL_BIG_GUNS) > 70) then
primary := create_object( PID_AVENGER_MINIGUN, 0, 0 );
else if (primary_roll ^ 600) and (big_gun == 1) and (has_skill(rndcritter, SKILL_ENERGY_WEAPONS) > 70) then
primary := create_object( PID_LASER_RIFLE, 0, 0 );
else if (primary_roll ^ 610) and (big_gun == 1) and (has_skill(rndcritter, SKILL_ENERGY_WEAPONS) > 70) then
primary := create_object( PID_PLASMA_RIFLE, 0, 0 );
else if (primary_roll ^ 625) and (rifle == 1) then
primary := create_object( PID_M72_GAUSS_RIFLE, 0, 0 );
else if (primary_roll ^ 655) and (rocket_launcher == 1) and (has_skill(rndcritter, SKILL_BIG_GUNS) > 70) then
primary := create_object( PID_ROCKET_LAUNCHER, 0, 0 );
else if (primary_roll ^ 665) and (minigun == 1) and (has_skill(rndcritter, SKILL_BIG_GUNS) > 70) then
primary := create_object( PID_VINDICATOR_MINIGUN, 0, 0 );
else if (primary_roll ^ 680) and (minigun == 1) and (has_skill(rndcritter, SKILL_ENERGY_WEAPONS) > 70) then
primary := create_object( PID_GATLING_LASER, 0, 0 );
else if (primary_roll ^ 700) and (rifle == 1) and (has_skill(rndcritter, SKILL_ENERGY_WEAPONS) > 70) then
primary := create_object( PID_YK42B_PULSE_RIFLE, 0, 0 );
else if (primary_roll ^ 710) and (big_gun == 1) and (has_skill(rndcritter, SKILL_BIG_GUNS) > 70) then
primary := create_object( PID_IMPROVED_FLAMETHROWER, 0, 0 );
else if (primary_roll ^= 720) and (big_gun == 1) and (has_skill(rndcritter, SKILL_ENERGY_WEAPONS) > 70) then
primary := create_object( PID_TURBO_PLASMA_RIFLE, 0, 0 );
if (get_weapon_ammo_pid(primary) == PID_5MM_JHP) or (get_weapon_ammo_pid(primary) == PID_5MM_AP) then begin
set_weapon_ammo_pid(primary, random(PID_5MM_JHP,PID_5MM_AP));
end else if (get_weapon_ammo_pid(primary) == PID_10MM_JHP) or (get_weapon_ammo_pid(primary) == PID_10MM_AP) then begin
set_weapon_ammo_pid(primary, random(PID_10MM_JHP,PID_10MM_AP));
end else if (get_weapon_ammo_pid(primary) == PID_HN_NEEDLER_CARTRIDGE) or (get_weapon_ammo_pid(primary) == PID_HN_AP_NEEDLER_CARTRIDGE) then begin
set_weapon_ammo_pid(primary, random(PID_HN_NEEDLER_CARTRIDGE,PID_HN_AP_NEEDLER_CARTRIDGE));
end else if (get_weapon_ammo_pid(primary) == PID_EXPLOSIVE_ROCKET) or (get_weapon_ammo_pid(primary) == PID_ROCKET_AP) then begin
if random(1,50) ^ 26 then
set_weapon_ammo_pid(primary, PID_EXPLOSIVE_ROCKET);
else
set_weapon_ammo_pid(primary, PID_ROCKET_AP);
end else if (get_weapon_ammo_pid(primary) == PID_9MM_BALL) or (get_weapon_ammo_pid(primary) == PID_9MM_AMMO) then begin
if random(1,50) ^ 26 then
set_weapon_ammo_pid(primary, PID_9MM_BALL);
else
set_weapon_ammo_pid(primary, PID_9MM_AMMO);
end else if (get_weapon_ammo_pid(primary) == PID_44_MAGNUM_JHP) or (get_weapon_ammo_pid(primary) == PID_44_FMJ_MAGNUM) then begin
if random(1,50) ^ 26 then
set_weapon_ammo_pid(primary, PID_44_MAGNUM_JHP);
else
set_weapon_ammo_pid(primary, PID_44_FMJ_MAGNUM);
end
ammo_roll:=random(rollmod, 430+rollmod);
if (ammo_roll ^ 351) and (obj_pid(primary) == PID_SHOTGUN or obj_pid(primary) == PID_SAWED_OFF_SHOTGUN or obj_pid(primary) == PID_SPRINGER_RIFLE) then
ammo_roll:=351;
if (ammo_roll ^ 101) then begin
set_weapon_ammo_count(primary, (get_weapon_ammo_count(primary)/4));
end else if (ammo_roll ^ 201) then begin
set_weapon_ammo_count(primary, (get_weapon_ammo_count(primary)/2));
end else if (ammo_roll ^ 351) then begin
set_weapon_ammo_count(primary, (get_weapon_ammo_count(primary) - (get_weapon_ammo_count(primary)/4)));
end else if (ammo_roll ^ 501) then begin
end else if (ammo_roll ^ 601) then begin
ammo1 := create_object( get_weapon_ammo_pid(primary), 0, 0 );
add_obj_to_inven(rndcritter, ammo1);
end else if (ammo_roll ^ 701) then begin
ammo1 := create_object( get_weapon_ammo_pid(primary), 0, 0 );
ammo2 := create_object( get_weapon_ammo_pid(primary), 0, 0 );
add_obj_to_inven(rndcritter, ammo1);
add_obj_to_inven(rndcritter, ammo2);
end else if (ammo_roll ^ 801) then begin
ammo1 := create_object( get_weapon_ammo_pid(primary), 0, 0 );
ammo2 := create_object( get_weapon_ammo_pid(primary), 0, 0 );
ammo3 := create_object( get_weapon_ammo_pid(primary), 0, 0 );
add_obj_to_inven(rndcritter, ammo1);
add_obj_to_inven(rndcritter, ammo2);
add_obj_to_inven(rndcritter, ammo3);
end else if (ammo_roll ^ 901) then begin
ammo1 := create_object( get_weapon_ammo_pid(primary), 0, 0 );
ammo2 := create_object( get_weapon_ammo_pid(primary), 0, 0 );
ammo3 := create_object( get_weapon_ammo_pid(primary), 0, 0 );
ammo4 := create_object( get_weapon_ammo_pid(primary), 0, 0 );
add_obj_to_inven(rndcritter, ammo1);
add_obj_to_inven(rndcritter, ammo2);
add_obj_to_inven(rndcritter, ammo3);
add_obj_to_inven(rndcritter, ammo4);
end else begin
ammo1 := create_object( get_weapon_ammo_pid(primary), 0, 0 );
ammo2 := create_object( get_weapon_ammo_pid(primary), 0, 0 );
ammo3 := create_object( get_weapon_ammo_pid(primary), 0, 0 );
ammo4 := create_object( get_weapon_ammo_pid(primary), 0, 0 );
ammo5 := create_object( get_weapon_ammo_pid(primary), 0, 0 );
add_obj_to_inven(rndcritter, ammo1);
add_obj_to_inven(rndcritter, ammo2);
add_obj_to_inven(rndcritter, ammo3);
add_obj_to_inven(rndcritter, ammo4);
add_obj_to_inven(rndcritter, ammo5);
end
if (primary_roll >= 170) and (random(1,100) > 50) and (pistol == 1) then begin
if (primary_roll ^= 220) then begin
if random(1,50) ^ 20 then
tertiary := create_object( PID_9MM_MAUSER, 0, 0 );
else
tertiary := create_object( PID_10MM_PISTOL, 0, 0 );
end else if (primary_roll ^= 550) then begin
tertiary_roll:=random(1, 100);
if (tertiary_roll ^ 34) then
tertiary := create_object( PID_10MM_PISTOL, 0, 0 );
else if (tertiary_roll ^ 67) then
tertiary := create_object( PID_44_MAGNUM_REVOLVER, 0, 0 );
else
tertiary := create_object( PID_DESERT_EAGLE, 0, 0 );
end else begin
tertiary_roll:=random(1, 100);
if (tertiary_roll ^ 26) and (has_skill(rndcritter, SKILL_ENERGY_WEAPONS) > 70) then
tertiary := create_object( PID_PLASMA_PISTOL, 0, 0 );
else if (tertiary_roll ^ 51) and (has_skill(rndcritter, SKILL_ENERGY_WEAPONS) > 70) then
tertiary := create_object( PID_LASER_PISTOL, 0, 0 );
else if (tertiary_roll ^ 76) then
tertiary := create_object( PID_NEEDLER_PISTOL, 0, 0 );
else
tertiary := create_object( PID_PK12_GAUSS_PISTOL, 0, 0 );
end
if (get_weapon_ammo_pid(tertiary) == PID_10MM_JHP) or (get_weapon_ammo_pid(tertiary) == PID_10MM_AP) then begin
set_weapon_ammo_pid(tertiary, random(PID_10MM_JHP,PID_10MM_AP));
end else if (get_weapon_ammo_pid(tertiary) == PID_HN_NEEDLER_CARTRIDGE) or (get_weapon_ammo_pid(tertiary) == PID_HN_AP_NEEDLER_CARTRIDGE) then begin
set_weapon_ammo_pid(tertiary, random(PID_HN_NEEDLER_CARTRIDGE,PID_HN_AP_NEEDLER_CARTRIDGE));
end else if (get_weapon_ammo_pid(tertiary) == PID_9MM_BALL) or (get_weapon_ammo_pid(tertiary) == PID_9MM_AMMO) then begin
if random(1,50) ^ 26 then
set_weapon_ammo_pid(tertiary, PID_9MM_BALL);
else
set_weapon_ammo_pid(tertiary, PID_9MM_AMMO);
end else if (get_weapon_ammo_pid(tertiary) == PID_44_MAGNUM_JHP) or (get_weapon_ammo_pid(tertiary) == PID_44_FMJ_MAGNUM) then begin
if random(1,50) ^ 26 then
set_weapon_ammo_pid(tertiary, PID_44_MAGNUM_JHP);
else
set_weapon_ammo_pid(tertiary, PID_44_FMJ_MAGNUM);
end
set_weapon_ammo_count(tertiary, (get_weapon_ammo_count(tertiary)/random(2,4)));
add_obj_to_inven(rndcritter, tertiary);
end
if (get_critter_stat(rndcritter, STAT_st) > 6) and (critter_kill_type(rndcritter) != KILL_TYPE_women_kills) then begin
if (primary_roll ^= 280) then begin
secondary_roll:=random(1, 80);
if (secondary_roll ^ 16) and (clubs == 1) then
secondary := create_object( PID_CLUB, 0, 0 );
else if (secondary_roll ^ 31) and (clubs == 1) then
secondary := create_object( PID_CROWBAR, 0, 0 );
else if (secondary_roll ^ 46) and (sledge == 1) then
secondary := create_object( PID_SLEDGEHAMMER, 0, 0 );
else
secondary := create_object( PID_BRASS_KNUCKLES, 0, 0 );
end else if (primary_roll ^= 500) then begin
secondary_roll:=random(1, 80);
if (secondary_roll ^ 21) and (clubs == 1) then
secondary := create_object( PID_CATTLE_PROD, 0, 0 );
else if (secondary_roll ^ 41) and (sledge == 1) then
secondary := create_object( PID_SLEDGEHAMMER, 0, 0 );
else
secondary := create_object( PID_SPIKED_KNUCKLES, 0, 0 );
end else begin
if (random(1,100) ^ 51) and (sledge == 1) then
secondary := create_object( PID_SUPER_SLEDGE, 0, 0 );
else
secondary := create_object( PID_POWER_FIST, 0, 0 );
end
end else begin
if (primary_roll ^= 120) then begin
if (random(1,100) ^ 51) and (knife == 1) then
secondary := create_object( PID_SHIV, 0, 0 );
else if (spear == 1) then
secondary := create_object( PID_SHARPENED_POLE, 0, 0 );
else
secondary := create_object( PID_SHIV, 0, 0 );
end else if (primary_roll ^= 240) then begin
if (random(1,100) ^ 51) and (knife == 1) then
secondary := create_object( PID_KNIFE, 0, 0 );
else if (spear == 1) then
secondary := create_object( PID_SPEAR, 0, 0 );
else
secondary := create_object( PID_KNIFE, 0, 0 );
end else if (primary_roll ^= 370) then begin
secondary_roll:=random(1, 80);
if (secondary_roll ^ 41) and (spear == 1) then
secondary := create_object( PID_SHARP_SPEAR, 0, 0 );
else if (knife == 1) then
secondary := create_object( PID_SWITCHBLADE, 0, 0 );
else
secondary := create_object( PID_SHARP_SPEAR, 0, 0 );
end else if (primary_roll ^= 500) then begin
if (knife == 1) then
secondary := create_object( PID_COMBAT_KNIFE, 0, 0 );
end else begin
if (knife == 1) then
secondary := create_object( PID_RIPPER, 0, 0 );
end
end
if (random(1,100) > 80) and thrown == 1 and (has_skill(rndcritter, SKILL_THROWING) > 59) then begin
if primary_roll ^ 200 then begin
if knife == 1 then begin
quaternary := create_object( PID_THROWING_KNIFE, 0, 0 );
add_obj_to_inven(rndcritter, quaternary);
if (random(1,100) > 30) then begin
quaternary := create_object( PID_THROWING_KNIFE, 0, 0 );
add_obj_to_inven(rndcritter, quaternary);
if (random(1,100) > 30) then begin
quaternary := create_object( PID_THROWING_KNIFE, 0, 0 );
add_obj_to_inven(rndcritter, quaternary);
if (random(1,100) > 30) then begin
quaternary := create_object( PID_THROWING_KNIFE, 0, 0 );
add_obj_to_inven(rndcritter, quaternary);
if (random(1,100) > 30) then begin
quaternary := create_object( PID_THROWING_KNIFE, 0, 0 );
add_obj_to_inven(rndcritter, quaternary);
end
end
end
end
end
end else if primary_roll ^ 400 then begin
if random(1,100) ^ 51 and knife == 1 then begin
quaternary := create_object( PID_THROWING_KNIFE, 0, 0 );
add_obj_to_inven(rndcritter, quaternary);
if (random(1,100) > 30) then begin
quaternary := create_object( PID_THROWING_KNIFE, 0, 0 );
add_obj_to_inven(rndcritter, quaternary);
if (random(1,100) > 30) then begin
quaternary := create_object( PID_THROWING_KNIFE, 0, 0 );
add_obj_to_inven(rndcritter, quaternary);
if (random(1,100) > 30) then begin
quaternary := create_object( PID_THROWING_KNIFE, 0, 0 );
add_obj_to_inven(rndcritter, quaternary);
if (random(1,100) > 30) then begin
quaternary := create_object( PID_THROWING_KNIFE, 0, 0 );
add_obj_to_inven(rndcritter, quaternary);
end
end
end
end
end
end else if (random(1,100) > 30) and not ((proto_data(obj_pid(rndcritter),cr_fid) == FID_HAPOWR) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_HANPWR) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_MAMTNT) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_MAMTN2) or (proto_data(obj_pid(rndcritter),cr_fid) == FID_NAPOWR)) then begin
if primary_roll ^ 270 then begin
quaternary_roll:=random(1,100);
if (quaternary_roll ^ 21) and (knife == 1) then
quaternary := create_object( PID_SHIV, 0, 0 );
else if (quaternary_roll ^ 41) and (clubs == 1) then
quaternary := create_object( PID_CLUB, 0, 0 );
else if (quaternary_roll ^ 61) and (knife == 1) then
quaternary := create_object( PID_KNIFE, 0, 0 );
else if (quaternary_roll ^ 81) then
quaternary := create_object( PID_BRASS_KNUCKLES, 0, 0 );
else if (clubs == 1) then
quaternary := create_object( PID_CROWBAR, 0, 0 );
end else if primary_roll ^ 380 then begin
quaternary_roll:=random(1,100);
if random(1,50) ^ 25 then
quaternary := create_object( PID_SPIKED_KNUCKLES, 0, 0 );
else if (knife == 1) then
quaternary := create_object( PID_SWITCHBLADE, 0, 0 );
else
quaternary := create_object( PID_SPIKED_KNUCKLES, 0, 0 );
end else begin
if (knife == 1) then
quaternary := create_object( PID_COMBAT_KNIFE, 0, 0 );
end
add_obj_to_inven(rndcritter, quaternary);
Link please?I was just thinking about that "Theme park" argument Andyman Messiah spoke about in another thread. Replaying Fallout 1 with the patch Sduibek made.
Original:
Rat: 6 HP, 0 DT, 0 DR
Pig Rat: 9 HP, 0 DT, 0 DR
Mole Rat: 26 HP, 0 DT, 0 DR
Greater Mole Rat: 36 HP, 2 DT, 25 DR
Mutated Mole Rat: 72 HP, 4 DT, 30 DR
With Revised Formula:
Rat: 6 HP, 0 DT, 3 DR
Pig Rat: 14 HP, 1 DT, 6 DR
Mole Rat: 26 HP, 2 DT, 9 DR
Greater Mole Rat: 34 HP, 6 DT, 27 DR
Mutated Mole Rat: 52 HP, 5 DT, 25 DR
Original:
Little Gecko: 25 HP, 0 DT, 20 DR
Tough Little Gecko: 35 HP, 0 DT, 20 DR
Golden Gecko: 45 HP, 2 DT, 25 DR
Tough Golden Gecko: 65 HP, 2 DT, 25 DR
With Revised Formula:
Little Gecko: 18 HP, 3 DT, 17 DR
Tough Little Gecko: 20 HP, 3 DT, 17 DR
Golden Gecko: 28 HP, 6 DT, 24 DR
Tough Golden Gecko: 37 HP, 6 DT, 24 DR
Original:
Immature Deathclaw: 50 HP, 2 DT, 15 DR
Tough Deathclaw: 310 HP, 10 DT, 50 DR
Revised new Formula:
Immature Deathclaw: 49 HP, 4 DT, 18 DR
Tough Deathclaw: 208 HP, 10 DT, 54 DR
Original:
Radscorpion: 26 HP, 2 DT, 0 DR
Spore Plant: 40 HP, 0 DT, 0 DR
Mantis: 16 HP, 0 DT, 0 DR
Revised New Formula:
Radscorpion: 36 HP, 2 DT, 8 DR
Spore Plant: 31 HP, 2 DT, 18 DR
Mantis: 25 HP, 1 DT, 15 DR
Original:
Sentry Bot Mark II: 120 HP, 13 DT, 50 DR
Robobrain: 80 HP, 5 DT, 40 DR
Floating Eyebot: 60 HP, 4 DT, 30 DR
Floater: 175 HP, 5 DT, 40 DR
Centaur: 150 HP, 4 DT, 35 DR
Alien: 120 HP, 6 DT, 40 DR
New Formula:
Sentry Bot Mark II: 93 HP, 9 DT, 49 DR
Robobrain: 60 HP, 7 DT, 44 DR
Floating Eyebot: 51 HP, 3 DT, 31 DR
Floater: 107 HP, 8 DT, 44 DR
Centaur: 93 HP, 6 DT, 36 DR
Alien: 79 HP, 9 DT, 46 DR
Original:
Super Mutant: 100 HP, 5 DT, 40 DR
Strong Super Mutant: 110 HP, 8 DT, 40 DR
New Formula (after adding 4 ST):
Super Mutant: 72 HP, 10 DT, 44 DR
Strong Super Mutant: 83 HP, 11 DT, 47 DR
[MODS]
;//*****************************************************Morale System*****************************************************;//
;There are four different options for the Morale System (setting MoraleSystem to 0 disables it):
;(1) is the default option, killing people (especially children) and losing health lowers your morale, while drinking alcohol moderately boosts it
;(2) makes alcohol an even more effective morale booster, but also makes the stuff more addictive
;(3) is the "good guy" option: a high karma boosts your morale, but killing people is even more detrimental to it than normally
;(4) is the inner Eichmann option: killing people doesn't faze you a bit, but losing health is very perturbing.
MoraleSystem=1
;//*****************************************************Revised Poison System*****************************************************;//
;This makes poison work far more rapidly than in the original (you make a check against your endurance every combat round and every five seconds
; in non-combat) and causes the Needler Pistol to poison enemies.
PoisonSystem=1
; If the Poison System is enabled, the following adjusts the amount of Poison damage the Needler Pistol does: as you see base values
; are 15-35 for regular ammo, and 10-25 for AP ammo. So raising NeedlerStrength to 5 makes the range 20-40 and dropping APNeedlerStrength to -5
; makes its range 5-15. NOTE: this doesn't affect the likelihood of piercing armor at all.
NeedlerLowerRange=20
NeedlerUpperRange=35
APNeedlerLowerRange=15
APNeedlerUpperRange=25
; PoisonSpeed changes every how many "game ticks" (10 to a second) you have to make a check against your endurance to see if you get a poison hit.
PoisonSpeed=50
;//*****************************************************Shotgun Changes*****************************************************;//
;This causes shotguns to do increased damage at close range, and decreased damage at long range.
NewShotgunSystem=1
;If above is enabled, the following value adjusts the range modifier: at default (5) max range does half damage and point blank range does 1.5 times damage.
;Put the value at minimum (1), and point blank range does 1.1 times the damage and max range 0.9 times the damage.
;Put the value at max (9), and point blank range does 1.9 times damage, etc. DON'T make the range higher than 9 or lower than 1. Default is 5.
ShotgunDamageMod=5
;//*****************************************************Consistent Localization*****************************************************;//
;This makes attacks "realistically" hit the bodypart they would hit based on a simulated targeting reticule (i.e. a large THC translates to
;usually hitting the bodypart aimed at, a low THC can be all over the place).
Localization=1
;//*****************************************************AP Changes*****************************************************;//
;This enables a simplified Action Point formula to overwrite the arbitrary ones of the original.
APChanges=1
;//*****************************************************To Hit Changes*****************************************************;//
;A long, long list of changes meant mainly to balance things out properly.
ToHitChanges=1
;If above is enabled, the following adjusts the To Hit cap (set to 100% by default).
ToHitCap=100
;The following enables the exhaustion system affecting to hit chances after a certain (endurance governed) amount of turns.
Exhaustion=1
;//*****************************************************Gear Randomization*****************************************************;//
;Randomizes NPC's weapons and ammo reserves.
GearRandomization=1
;//*****************************************************Fixed HP*****************************************************;//
;Fixes the player's HP. The formula can be changed through Stats.ini.
FixedHP=1
;//*****************************************************Drug Changes*****************************************************;//
;Stimpaks now mainly heal temporarily and SuperStims give a temporary higher max HP.
DrugChanges=1
;If above is enabled, the following values affect how much temporary, and permanent health regular (16 and 4 by default respectively) and Super Stims
; (50 and 10) heal. The temporary values change in increments of 2. So, for instance, a value of -5 for StimTemporary makes it 6 (16-5*2).
; SuperstimMaxHP changes the ammount of (temporary) max hp superstims increase (10 default). PsychoMaxHP does the same for Psycho (
StimPermanent=0
StimTemporary=0
SuperStimPermanent=0
SuperStimTemporary=0
SuperStimMaxHP=0
;Non-party critters will now also attack you if you try to use stims on them and the following is enabled:
NoDrugExploits=1
;To replace the time tested stimpak healing method out of combat, the following boosts your healing rate based on first aid skill.
;FirstAidMod modifies how much the First Aid skill is divided by to arrive at this (so, raising the number actually lowers the effect).
FirstAidResting=1
FirstAidMod=10
;//*****************************************************Critical Hit Changes*****************************************************;//
;Changes the way crit chances work.
CriticalHits=1
;//*****************************************************Critical Failure Changes*****************************************************;//
;Changes the way critical failure chances work. There are now two rolls (one based on Luck, another based on other attributes and skills
; related to the weapon type used).
CriticalFailures=1
;If above is enabled, the following values affect the new system:
;LuckImportance changes the value of n in the formula
; (it's a roll of 1-to-100 against 99-(n*10) + luck*(n), so the higher LuckImportance, the higher the importance of Luck, herp).
; MAX is 9, MIN is 1. Default is 3.
LuckImportance=3
;FailureChance decreases or increases the overal critical failure chance by changing the other roll
; (e.g. for Unarmed weapons it changes n for the roll of 1-to-(n) against agility*20+unarmedskill*4).
;strictly speaking Min is 1 and Max is however high you want, but you can tell by the formula what'll work best. Default is 1000.
FailureChance=1000
;//*****************************************************Passive Armor Repair*****************************************************;//
;Affects the usefulness of armor based on the wearer's skill.
ArmorRepair=1
;//*****************************************************Supply and Demand Mod*****************************************************;//
;Affects the prices of goods based on how many are in any particular map.
SupplyAndDemand=1
;If above is enabled, SupplyImportance and BasePrice let you manipulate the new pricing formula: (itemcost*BasePrice)/(80+(itemamount*SupplyImportance)),
;the higher SupplyImportance is set, the more the amount of items lowers the price. The higher BasePrice is set, the higher the base price is, herp.
SupplyImportance=20
BasePrice=100
;//*****************************************************Stat Changes*****************************************************;//
;Affects HP and a number of skills for Armor wearing (non-party) critters, and in addition DR and DT ratings for non-armor wearing (non-party) critters
;Note that if you want to change the player's HP formula, you need to go to Stats.ini.
StatChanges=1
;For armor-wearing critters the formula for HP is BaseHPMod+(Endurance*EnduranceHPMod)+(Strength*StrengthHPMod)
BaseHPMod=20
EnduranceHPMod=5
StrengthHPMod=1
;For armor-wearing critters the formula for skills is (AttributeSkillMod*Attribute1)+(AttributeSkillMod*Attribute2)+(Experience Value/ExperienceSkillMod).
;Attribute1 & 2 represent the attributes associated with the skill (so, for traps it'd be PE and AG, and for science both IN).
ExperienceSkillMod=10
AttributeSkillMod=4
;For non-armor-wearing critters the formula for HP is (Experience Value/ExperienceHPMod)+(Endurance*EnduranceHPMod2)+(Strength*StrengthHPMod2).
ExperienceHPMod=10
EnduranceHPMod2=3
StrengthHPMod2=1
;For non-armor-wearing critters the formula for DT is (Strength/StrengthDTMod)+(ExtraAC/ExtraACDTMod)
;ExtraAC is the armor class bonus given to critters on top of the agility bonus.
StrengthDTMod=2
ExtraACDTMod=5
;For non-armor-wearing critters the formula for DR is (Endurance*EnduranceDRMod)+(ExtraAC/ExtraACDRMod)
EnduranceDRMod=3
ExtraACDRMod=1
;Armor wearing critters get penalties to their agility: HeavyArmorAgilityMod for metal armor and upwards, LightArmorAgilityMod for lower.
HeavyArmorAgilityMod=-2
LightArmorAgilityMod=-1
Should I Ironman it? FO2 is notably hard to Ironman, I have a feeling I'm gonna be sodomized with this mod.
I wonder if you can find someone to make interface changes for you. The interface can certainly be changed, as the RP proves with its unlimited save slots, appearance options, etc.
What Weapons/combat mod are you using alongside? YAAM and Magnus' mod were quite good. I really really need my awesome pew pew lasers.
How does Gear Randomization works? Is there some level-scaling element? What about the sprites?
Jim, can you make poison weaken stats in accordance to the ammount of poison and time spent poisoned?
Also, Geckos are (supposed) to be poisonous if I remember right, yet the only poisonous creatures in the game are Radscorpions and Floaters.
I remember there was a guy with the idea of a mod adding more radiation hazard into the game, in places and situations you should find them (Toxic Caves, Gecko town and reactor, Broken Hills mine and from critter attacks in general). Maybe I will hunt it down and ask him to compare notes.
Do you think you can make it work with Killap's Restoration Pack?
Suggestion: I think I saw a while back you guys were talking about NPCs demanding payment of somesort or such. You could do it like Surf Solar will do in What Remains: If I remember right, having a NPC or more lessens the ammount of loot, kinda like the inverse of the perk that increases amount of money loot (can't remember which it was) and increases with numbers. This seems awesome and fixes any problem involving inventories. Unsure if you can do it in the Fallout engine, but its worth a