Skip to content

Commit

Permalink
Release preparations
Browse files Browse the repository at this point in the history
- Updated docs
- Added crafting readme
- Updated batch scripts and installer
- Changed called_freq_mult to a "safer" 0.5
- Corrected BringX rewards for new economy
- Minor script fixes
  • Loading branch information
phobos2077 committed May 30, 2024
1 parent 093410e commit f59dc65
Show file tree
Hide file tree
Showing 15 changed files with 145 additions and 19 deletions.
15 changes: 15 additions & 0 deletions docs/crafting_readme.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
Crafting system in EcCo is made completely independent from the rest of the mod.
It is fully configurable and only requires a fairly recent version of sfall.

All recipes and general settings are configured in data/config/pbs_craft.ini (description for every setting and recipe examples included).
All custom art is in data/pcx folder. You can change it however you need as long as you don't change image sizes.

You can choose to use recipe categories, if you have many recipes.
You can use sfall global vars to unlock certain recipes (they will only show if given gvar value is non 0).
If gvar value is a number - it will be automatically treated as a regular Fallout global var.

You can use schematics system to easily add new unlockable recipes to the game:
- Set schema=1 for a recipe.
- Designate a certain set of items as a "schematics" and list them in [Main].schematic_pids
- Open a script that will spawn a schematic item (such as shop stock box) and include "craft_schematics.h".
- Call check_restock_craft_schematic to spawn a schematic item, see comment for details.
13 changes: 5 additions & 8 deletions docs/ecco_changelog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,36 +14,33 @@ v0.9.6:
- added critical healing success: restores much more HP than normal
- added critical failure: reduces remaining uses of a kit/bag
- added ignoring daily limits when using kits/bags
- added ability to use Super Tool Kit and Multitool to repair party robots better
- buffed skill level influence on critical success and failure chances
- buffed restored HP amount for all 3 skills
- nerfed rest heal interval to 6 hours (from 3)
- nerfed world travel heal interval to 24 hours (was 1 real-time second; requires future sfall update)
- nerfed Stimpak scaling from 0.9.5 and removed Super Stimpak from scaling
- fixed numerious bugs and inconsistencies of vanilla healing system

> Economy:
- reduced all barter prices by ~40% (makes money more valuable)
- reduced buy/sell price gap by ~10-15% (heavily depends on skill)
- reduced party money in existing saves by 20%
- reduced prices of some subdermal implants and weapon upgrades
- reduced a few late-game large monetary transactions
- reduced prices of some subdermal implants, weapon upgrades and a few late-game large monetary transactions
- reduced prices of learning stuff from a Klamath Trapper
- reduced drugs in dead NPC's by further 40%
- improved requirements/rewards ratio for new creature parts fetch quests
- tweaked a few item prices

> Crafting:
- changed metal armor recipes to require buying schematics
- added schematic for improving Flamer
- fixed craft button disappearing when using external HRP
- fixed bug with disassemble that allowed for infinite item exploit

> Traps:
- added Demolition Expert to reduce arming AP cost by half
- fixed inconsistent AP cost between different methods of arming traps

> Balance:
- changed monster part quests requirements/rewards ratio to make economic sense
- reduced drugs in dead NPC's by further 40%
- minor weapon stat tweaks

> Installer:
- added more options for disabling some mod features

Expand Down
45 changes: 45 additions & 0 deletions docs/ecco_changelog_ru.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,50 @@
-=== СПИСОК ИЗМЕНЕНИЙ ===-

v0.9.6:
> Бой и ИИ:
- увеличена частота прицельных выстрелов ИИ
- добавлено выпадение оружия из рук при некоторых критических попаданиях по рукам
- снижен минимальный уровень ИН для прицельных выстрелов ИИ
- поправлен урон и разброс пуль в очередях некоторого оружия для соответствия их предназначению
- исправлена анимация смерти огнём при использовании Молотова и 40мм зажигательных гранат

> Лечение:
- заменено использование навыков Первая Помощь, Доктор и Ремонт на своё скриптовое решение
- добавлен фикс. количество использований для аптечек и докторских сумок (вместо 10% шанса на удаление)
- добавлен критический успех лечения: восстановит больше ОЗ
- добавлена критическая неудача: удалит часть медикаментов в аптечке/сумке
- добавлена возможность использовать инструменты для ускоренного ремонта роботов в команде
- использование аптечек/сумок обходит посуточное ограничение на использование навыков лечения
- усилено влияние навыка на вероятность критического успеха или неудачи
- увеличены базовые значения восстанавливаемых ОЗ
- снижена скорость лечения при отдыхе (раз в 6ч. вместо 3х)
- снижена скорость лечения при путешествиях (раз в 24 игровых часа вместо раза 1 секунду; требует обновление sfall)
- снижено влияние навыка на лечение Стимпаками из 0.9.5 и убрано влияние на Супер Стимпак

> Экономика:
- снижены все цены на ~40% (деньги стали дороже)
- снижено соотношение цен покупки к ценам продажи на ~10-15% (сильно зависит от навыка)
- снижены денежные запасы в текущих сохранениях на 20%
- снижены цены на некоторые подкожные импланты, апгрейды оружия и некоторые крупные транзакции в поздней игре
- снижена цена обучения у траппера в Кламате
- скорректированы цены некоторых предметов
- улучшено соотношение требования/награда в новых заданиях на сбор частей тел существ
- снижено количество лекарств в трупах ещё на 40%

> Ремесло:
- добавлены рецепты для создания металлической брони в продажу некоторым торговцам
- добавлен рецепт улучшения Огнемёта
- исправлена исчезающая кнопка ремесла при использовании внешнего патча HRP
- исправлена возможность создавать бесконечные предметы сборкой/разборкой некоторых рецептов

> Ловушки:
- способность Подрывник снижает требуемые ОД для установки ловушек во время боя
- исправлены неточности в требуемых ОД для установки ловушек разными способами

> Установщик:
- добавлено больше опция для отключения частей мода


v0.9.5
> Ремесло:
- редизайн кнопки ремесла и окна описания предмета
Expand Down
20 changes: 20 additions & 0 deletions docs/ecco_readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,26 @@



-=== MANUAL INSTALLATION (ZIP) ===-
1. Follow normal installation steps from the github releases page up until using the installer.
2. Unpack zip contents into the game root folder, overwriting files.
3. Open ddraw.ini and find/change the following options in the [Misc] section:

DamageFormula=0
ObjCanHearObjFix=1
DerivedStats=sfall\stats.ini
SkillsFile=sfall\skills.ini
PerksFile=sfall\perks.ini
BooksFile=sfall\books.ini
MovieTimer_artimer1=120
MovieTimer_artimer2=235
MovieTimer_artimer3=350
MovieTimer_artimer4=470

4. Follow the rest of the installation steps from github.



-=== COMPATIBILITY ===-
Talking Heads Addon & Talking Heads Actually Talk (THAT):
- Full built-in support, no patches needed (if you previously used compatibility patches, DELETE them)
Expand Down
27 changes: 27 additions & 0 deletions extra/build_zip.cmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
@ECHO OFF
setlocal EnableExtensions

set cwd=%cd%
cd /d "%~dp0..\"

set root=%cd%
set archive=%root%\extra\pbs_fo2rpu_ecco_mod_v0-9-6.zip

if exist %archive% (
echo Deleting existing %archive%...
del %archive%
)

set exe="C:\Program Files (x86)\7-Zip\7z.exe"

echo Adding mod files...
cd /d %root%\root
%exe% a %archive% mods\* sfall\* > nul

echo Adding docs...
cd /d %root%\docs
%exe% a %archive% ecco_readme.txt ecco_changelog.txt > nul

echo Done!

cd /d "%cwd%"
5 changes: 5 additions & 0 deletions extra/compile_all.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@ if not exist "%output%" mkdir %output%
cd /d "%output%"
SET output=%cd%

if "%1"=="-r" (
echo Deleting all compiled scripts...
del /Q *.int
)

rem SET compile=%root%\extra\bin\compile.exe

cd /d "%root%/scripts_src"
Expand Down
10 changes: 7 additions & 3 deletions extra/installer.iss
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
AppName={#MyAppName}
AppID=pbs_fallout2_economy_and_combat
AppVerName={#MyAppPublisher} {#MyAppName}
OutputBaseFilename=pbs_fo2rpu_ecco_mod_v0-9-WIP
OutputBaseFilename=pbs_fo2rpu_ecco_mod_v0-9-6
DefaultDirName={sd}\Games\Fallout2\
AppendDefaultDirName=no
;UsePreviousAppDir=no
Expand Down Expand Up @@ -64,7 +64,8 @@ en.InstallCustom=Custom install
en.InstallNull=Uncheck all

en.CMain=EcCo Gameplay Overhaul mod
en.CAICalledShots=More frequent called shots by NPC's
en.CAICalledShots=Improved AI aimed attack selection algorithm
en.CAICalledShotsMore=More frequent aimed attacks
en.CCriticals=Critical hit table improvements
en.CCarryUnspentAP=Carry up to 2 unspent AP to next round
en.CRemoveBonusRoF=Removal of Bonus Rate of Fire perk
Expand All @@ -89,7 +90,8 @@ ru.InstallCustom=Выборочная установка
ru.InstallNull=Ничего не выбирать
ru.CMain=EcCo - переработка геймплея
ru.CAICalledShots=Более частые прицельные атаки ИИ
ru.CAICalledShots=Улучшенный алгоритм выбора прицельных атак ИИ
ru.CAICalledShotsMore=Более частые прицельные атаки
ru.CCriticals=Улучшения таблицы критических повреждений
ru.CCarryUnspentAP=Перенос части непотраченных ОД на следующих ход
ru.CRemoveBonusRoF=Удаление перка "Бонус скорострельности"
Expand Down Expand Up @@ -118,6 +120,7 @@ Name: "custom"; Description: "{cm:InstallCustom}"; Flags: iscustom
Name: "main"; Description: "{cm:CMain}"; Types: full custom; Flags: fixed
;Name: "option"; Description: "{cm:COptions}"; Types: full
Name: "ai_called_shots"; Description: "{cm:CAICalledShots}"; Types: full
Name: "ai_called_shots\more"; Description: "{cm:CAICalledShotsMore}"; Types: full
Name: "criticals"; Description: "{cm:CCriticals}"; Types: full
Name: "carry_unspent_ap"; Description: "{cm:CCarryUnspentAP}"; Types: full
Name: "remove_bonus_rof"; Description: "{cm:CRemoveBonusRoF}"; Types: full
Expand Down Expand Up @@ -170,6 +173,7 @@ Filename: "{app}\ddraw.ini"; Section: "Misc"; Key: "MovieTimer_artimer4"; String
;Filename: "{app}\ddraw.ini"; Section: "Misc"; Key: "CheckWeaponAmmoCost"; String: "1"; Components: combat
Filename: "{app}\mods\ecco\combat.ini"; Section: "AI"; Key: "called_tweaks"; String: "0"; Components: not ai_called_shots
Filename: "{app}\mods\ecco\combat.ini"; Section: "AI"; Key: "called_freq_mult"; String: "1.0"; Components: not ai_called_shots\more
Filename: "{app}\mods\ecco\combat.ini"; Section: "CRITICALS"; Key: "enable_tweaks"; String: "0"; Components: not criticals
Filename: "{app}\mods\ecco\combat.ini"; Section: "CRITICALS"; Key: "drop_flag_fix"; String: "0"; Components: not criticals
Filename: "{app}\mods\ecco\combat.ini"; Section: "APCOST"; Key: "carry_unspent_ap"; String: "0"; Components: not carry_unspent_ap
Expand Down
5 changes: 4 additions & 1 deletion extra/makedat.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@ cd /d "%~dp0..\"
SET root=%cd%
SET mainDat=rpu_y_ecco.dat

if exist %mainDat% del %mainDat%
if exist %mainDat% (
echo Deleting existing %mainDat%...
del %mainDat%
)

cd /d "%root%\root\data"
%root%\extra\bin\dat2.exe a -r %mainDat% art\* config\* data\* maps\* pcx\* proto\* scripts\* sound\* text\*
Expand Down
1 change: 1 addition & 0 deletions root/data/text/russian/dialog/dcvic.msg
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@
{2311}{}{����� �������. ���������� �� ����� �������� �����.}
{2403}{}{��� �� ���� ��� ����� �� ������� 13?}
{2404}{}{���, ������.}
{2405}{}{��� ���� �������?}
{2500}{}{�������, ����.}
{2501}{}{����������� ��� ������, ����.}
{2502}{}{� ������ ��� �����, ����.}
Expand Down
2 changes: 1 addition & 1 deletion root/mods/ecco/combat.ini
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ called_tweaks=1
called_int_req=6,4,2

; Global multiplier for called_freq of all AI packets (ai.txt). Useful to increase called shot frequency across the game without editing every packet.
called_freq_mult=0.2
called_freq_mult=0.5


[DAMAGE]
Expand Down
10 changes: 9 additions & 1 deletion scripts_src/_pbs_craft/craft_schematics.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,14 @@

#define ARR_SCHEMAS "pbs_craft_schemas"

#ifndef debug_log
#ifdef ndebug
#define debug_log(msg, ...) ndebug(msg)
#else
#define debug_log(msg, ...) debug_msg("craft_schematics.h: " + msg)
#endif
#endif

variable
craft_schemas_map;

Expand Down Expand Up @@ -41,7 +49,7 @@ procedure check_restock_craft_schematic(variable schematicPid, variable craftedI

if (isKnown or random(1, 100) > probability) then return;

ndebug("spawning crafting schematic " + schematicPid + " for item " + craftedItemPid);
debug_log("spawning crafting schematic " + schematicPid + " for item " + craftedItemPid);
item := create_object(schematicPid, 0, 0);
set_weapon_ammo_count(item, craftedItemPid); // set count before adding to prevent stacking
add_obj_to_inven(self_obj, item);
Expand Down
4 changes: 2 additions & 2 deletions scripts_src/_pbs_headers/quests_bringX.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
// <0 - time when next available
#define LVAR_BRING_X (8)

#define _BRING_REWARD (6000)
#define _BRING_REWARD (4000)
#define _BRING_COUNT (8)

#define is_first_bring (local_var(LVAR_BRING_X) == 0)
Expand Down Expand Up @@ -107,7 +107,7 @@ end
// <0 - quest was completed, time when next available
#define LVAR_BRING_X (8)

#define _BRING_REWARD (1200)
#define _BRING_REWARD (900)
#define _BRING_COUNT (10)

#define is_first_bring (local_var(LVAR_BRING_X) == 0 or local_var(LVAR_BRING_X) == 1)
Expand Down
2 changes: 1 addition & 1 deletion scripts_src/_pbs_headers/talking_heads_compat.h
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@
#define HEAD_MOR (194)
#define HEAD_CERI (195)
#define HEAD_RHEA (196)
#define HEAD_JONES (197)
//#define HEAD_JONES (197)
#define HEAD_HANGM (198)
#define HEAD_BADG (199)
#define HEAD_ELD (200)
Expand Down
3 changes: 2 additions & 1 deletion scripts_src/_pbs_main/gl_pbs_ai.ssl
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ procedure ai_choose_bodypart(variable attacker, variable attackType, variable hi

// Roll against called_freq.
variable calledFreq := ceil(get_object_ai_data(attacker, AI_CAP_CALLED_FREQ) * ini_called_freq_mult);
//debug_log_fmt("Called freq for packet %d = %d", get_ai(attacker), calledFreq);
if (random(1, calledFreq) != 1) then return BODY_UNCALLED;

// Minimum INT check.
Expand Down Expand Up @@ -147,7 +148,7 @@ procedure tohit_handler begin

/*debug_log(string_format("tohit %s = %d (same_tile: %d, use_dist: %d, part: %d)",
obj_name(attacker), hitChance, sameTile, useDist, bodyPart)
/*+ string_format("; ctd: (crit: %s, part: %d, flags: %d)",
+ string_format("; ctd: (crit: %s, part: %d, flags: %d)",
obj_name(ctdAttacker), ctdBodyPart, ctdFlags) );*/

// A crazy hack based on understanding exactly when HOOK_TOHIT is called and how main_ctd is used by engine:
Expand Down
2 changes: 1 addition & 1 deletion scripts_src/_pbs_main/gl_pbs_critical_table.ssl
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ procedure combatdamage_handler begin
targetFlags := get_sfall_arg_at(4),
attackerFlags := get_sfall_arg_at(5);

debug_log_fmt("combatdmg Attacker (%s): %x, Target: %x", obj_name_safe(attacker), attackerFlags, targetFlags);
//debug_log_fmt("combatdmg Attacker (%s): %x, Target: %x", obj_name_safe(attacker), attackerFlags, targetFlags);
if (target and attacker and (attackerFlags bwand DAM_HIT) and (targetFlags bwand DAM_DROP)) then begin
variable targetWeapon := get_active_weapon(target);
if (targetWeapon) then begin
Expand Down

0 comments on commit f59dc65

Please sign in to comment.