《海盗时代2:沉船之城》修改方法详解

《海盗时代2:沉船之城》修改方法详解

所属游戏: 海盗时代2:沉船之城
英文名称:
相关操作: 收藏 下载地址 扩展
模组作者:NoWater
标签:
最后更新:2017-12-19

我玩腻了,最后把有人提到重大疏忽修正下,要是彼得剧情沉船、飞百慕大落下船的有劳您再下一次,或者重装一次游戏把做过的改动复原:

1、主角舰队舰数增至10艘(仅限于劫船时用,且不要停靠在另一侧为敌对港口的狭窄小岛),俘虏副官数增至40个;

2、增加人物负重能力,负重perk改为增加100;

3、副官获得经验速度与主角相等,加了perk后为主角2倍;

4、主角初始能力全10,提升初始技能(可修满个人特技,舰船特技请靠副官解决),起始资金为5000000,起始地点固定为百慕大;

5、起始船只改为用于抢海狼号的7级快艇;

6、修复英文版下的阿兹台克任务对话bug;

7、副官装备界面下可为其更换装备;

8、大幅减少食物和朗姆酒的消耗,减少水手和副官的薪水,减少提升士气所需的金钱数量,增加老鼠磨牙后提供的技能经验值数;

9、在岸上过夜时水手经验不减,航海时水手炮术和肉搏能力也会缓慢增加,超载时不减士气;

10、非剧情特殊副官能力全10(不影响普通副官和敌人);

11、大幅提高商店图腾的出现几率,商店不再出售除了武器、图腾、地图、药品、弹药、水晶骷髅以外的其它个人物品;

12、船厂出售超2、超3、超4等数据随机的特殊船,且数据固定为RP最好(可能性无限接近于零)时能够随出的数据;

13、特殊船最大炮口径全部提高到42(鬼船除外),最大炮口径32以上的船都可以随出42的炮;

14、帆布、船板、朗姆酒改为以10为单位买卖;

15、彼德剧情中不会被没收武器,结束时抢到的船改为用于抢海狼号的7级快艇;

16、默认开启作弊模式,F10键为特殊副官状态,F11键为debug窗口(汉化版可用);

17、大幅提高酒馆可招募的水手数;

18、百慕大船厂改炮上限提高到42磅,且所有改造项目可无限改造(直至数据BT到溢出为止……);

19、新增作弊键,F5键切换无敌状态,insert键直飞百慕大;

20、可利用RESOURCEINItextsrussianPsHero.txt文件新增特殊副官,格式与HeroDescribe.txt一样,已有一个示例亨利摩根大大(汉化版可用)。

改游戏比玩游戏有趣多了。

友情提醒:修改代码文件请使用16进制编辑器,个人推荐UltraEdit。

=======================咱是又长又粗的分割线============================

按顺序来,首先是Programcharacters目录,想必大家都研究透了,就权当照顾下新人吧

characters.h文件定义了一些与角色属性有关的数值和字符串,字符串不能碰,咱可以动动数值

#define PASSENGERS_MAX        64

#define PRISONER_MAX        40

#define COMPANION_MAX        10

懂英语的显然可以看出这是定义乘客数(一般也就是副官)最大值、囚禁舰长数最大值和舰队舰长数(包括主角)最大值,改成想要的值就行了。

#define SKILL_MAX           100

#define SPECIAL_MAX         10

以上分别是技能和属性点的最大值,如果光改实际值不改这个上限是没用的,另外注意技能和属性点不要改太大,否则在游戏的算法引用时会出错,例如把天赋弄到40主角就会像赛亚人一样不管做什么都会升级。

-------------咱是又细又短的分割线----------------

RPGUtilite.c应该是大部分人修改的起点了,涉及人物数值的生成,所以咱们主要是改里面的公式。HP和EN的算法是公用的就别改了,想割草还不如改把神兵出来。嘛,先看这句

int GetCharacterSkillSimple(ref _refCharacter, string skillName)

下面有n行形似

skillN = skillN + SetCharacterSkillByItem(_refCharacter, skillName, SKILL_FORTUNE, "jewelry9",1);

的代码,这是物品的属性加成,SKILL_FORTUNE是技能名,可以去characters.h里找,jewelry9是物品代码,到ProgramITEMS目录下翻吧,1则是加成值(在游戏中实际加成会×10),显然,这个物品是小十字架

int GetShipClassNavySkill(int shipClass)

开船要的航海技能点数,下面的needSkill全=0的话你就可以一开始操MOW了

void AddCharacterExpToSkill(ref _chref, string _skill, float _addValue)

定义经验的获取率,注释officers下面的代码就决定了军官们可以从主角那里揩到多少油水,形如

AddCharacterExpToSkill(GetCharacter(cn), _skill, _addValue * 2);

要多少看着办吧,注意if (CheckCharacterPerk(_chref, "SharedExperience"))下的三句是在有共享经验技能时的揩油率,再下来三句才是正常情况下的

int GetMaxItemsWeight(ref _chref)

这个可谓人尽皆知了,定义人物负重,虽然是公用的不过给敌人加负重也没啥影响

if (IsCharacterPerkOn(_chref, "Grus")) iBonus = 100;

定义负重perk

iBonus = iBonus + CHAR_ITEMS_WEIGHT + GetCharacterSPECIALSimple(_chref, SPECIAL_S)*(GetCharacterSPECIALSimple(_chref, SPECIAL_E) + 75 - MOD_SKILL_ENEMY_RATE);

定义基础负重,最简单的改法就是动那个数字了

void initNewMainCharacter()

主要角色简称主角的定义

case "Adventurer":

SetSPECIAL(ch, 10,10,10,10,10,10,10);

SetCharacterPerk(pchar, "HPPlus");

SetCharacterPerk(pchar, "EnergyPlus");

break;

adventurer就是职业名了,除了可以用SetSPECIAL改属性值外,还可以用SetCharacterPerk加特技,这个方法的麻烦之处在于要选择相应职业,要么就把海盗和商人一并改了,所以咱们可以换用下面这个

ch.skill.freeskill   = 0;

ch.Skill.FreeSPECIAL = 0;

可自由分配的技能点和属性点数,咱进游戏里手动加,再下来

pchar.Ship.Type = GenerateShip(SHIP_WAR_TARTANE, 0);

一开始用什么船,可以去ProgramShips下找,顺便这句是船的生成语句,遍布各个代码文件,跟上面那个SetSPECIAL和SetCharacterPerk一样几乎到处都是,还有如果你足够恶趣味可以把0改成1,你的船就是赃物了……对于狂派而言还有个问题,船的数据是随机生成的,咱想开鱼雷快艇咋办?那就在下面添加

ref rRealShip = GetRealShip(sti(pchar.Ship.Type));

rRealShip.MaxCaliber = 42;

rRealShip.MaxCrew    = 500;

rRealShip.OptCrew    = 350;

rRealShip.Capacity   = 50000;

rRealShip.HP         = 5000;

rRealShip.WindAgainstSpeed = 50.0;

rRealShip.SpeedRate         = 50.0;

rRealShip.TurnRate   = 200.0;

rRealShip.Price      = 500;

好了,鱼雷艇生成完毕,然后咱再改改起始物品就可以上路了

void initMainCharacterItem()

定义角色持有物品

case "Adventurer":

SetSelfSkill(pchar, 5, 5, 5, 5, 100);

SetShipSkill(pchar, 30, 50, 70, 60, 20, 80, 100, 90, 100);

GiveItem2Character(Pchar, "Blade10");

GiveItem2Character(Pchar, "pistol2");

TakenItems(Pchar, "potion1", 13);

TakenItems(Pchar, "potion2", 1);

TakeNItems(Pchar, "bullet", 15);

TakenItems(Pchar, "jewelry9", 1);

GiveItem2Character(Pchar, "Spyglass2");

pchar.money = 5000000;

break;

SetSelfSkill和SetShipSkill是直接定义角色技能值,这些语句其实放哪里都行,不用太拘泥于原函数是干嘛的,咱又不是程序员。GiveItem2Character和TakenItems都是加物品,区别只是加1个和加n个,最后的money就不用说了吧?好,没有啥追求的话到这里就可以开始爽了,去开始新游戏吧。