Jump to content

Fallout⁴ Fantasy


Recommended Posts

Posted

Fallout⁴ Fantasy

View File

This mod just does too much to try explaining it in a single paragraph. So I will update the documentation as it goes (if it goes). No screenshots yet, but feel free to upload yours in case you don't mind me using it. I didn't find a good reason to upload mine here.

 

PRE-? VERSION WARNING

DO NOT install:

  • Mid-game. A new game is ABSOLUTELY required.
    • IMPORTANT: As per reports: It is highly recommended to start the game with alternate start mods, such as Start Me Up. Otherwise there's a chance that the controller item added by this mod will be removed by the game during the main quest init sequence.
  • With any serious playthrough in mind. It WILL have bugs, critical glitches and most likely will even cause you to CTD!

 

This version is only released as I don't see any other way for it to see the light of day and my hope is that I get some interest and support from the community. The mod is just too large in functionality for me to ever hope to address everything on my own.

 

YOU GET:

A massive extension to the Fallout4 gameplay experience. Fallout Fantasy is an addition to the game world that seeks to enhance character building and role-playing aspects of the game. You will get systems like races and classes as well as ways to immerse into some RP elements. The information on existing systems is updated in the main thread, but due to sheer amount of things it takes some time to cover it. Here's the list of the documented things so far:

 

 

But there are likely more systems in FF4 that I didn't yet mention in the main thread. With this in mind, I will update this post when I add new information.

 

REQUIREMENTS

 

It does integrate with a lot of item mods (racial appearance) and some LL mods (Adult stuff), but none of any mods is required. You can install it on a game without any DLC and it should work (erm.. it theory. I never tested that scenario)

 

PERMISSIONS

"Be nice". You can take assets from this mod, but I'd like if you asked me first stating why you would want them. All of the content here is wither CC3 or commercial license which I bought for myself (like sounds on steam), so yes - I spent some $$$ on it. Anyhow, I did some solid research - or so I believe - to ensure my content is either fully original or is derived from the works where it's explicitly allowed by the license. Nothing in FF4 is taken without consent, license or permission. Thus I expect anyone who'd want to take stuff to abide by same principles.

 

YOU CAN HELP

In fact, I'm hoping you will. Especially if you're a modder (because I for sure am not). Here's where I need support if this mod is ever to advance:

 

  • Testing, obviously. There's just too much stuff I won't be able to get on my own
  • Direct contribution:
    • Adding spells (FF4 has it's whole spells system which can be extended with new spells), but I just didn't have time to wok on that a lot.
    • Adding feats (same reason as spells)
  • Animations - I'm willing to pay you some $$$ if you can help me with some of the stuff I have in mind
  • Quests - to be honest, this whole mod is done entirely in FO4Edit, I never used CC properly in my life. But that has its limits. Namely, dialogues and quests are mostly out of my reach. I'd like to introduce some story line and racial / class quest lines - but.. alas, I have no knowledge to do so
  • UI - if you can guide me to create my own UI widgets / plugins, this is also some stuff I'm willing to pay for.

 


 

Posted

RACES

There are 10 races in total in the mod. All the races are implemented as an extension to the actor record and not as a proper "race" entries. Reason for doing this is to keep as much compatibility with other mods as possible. Unfortunately, there are certain engine bugs and hardcoded stuff that makes it very hard or impossible to keep compatibility with custom races for stuff like PA mods, LMCC and its company and so on.

 

 

Racial Properties

All races come with:

 

  • Racial Feat: a special trait that is given to the race
  • Racial Proficiency: types of items that the race can use "out of the box"
  • Racial Stats: A stats change (SPECIAL) gained by the individuals of this race.
  • Alignment Restrictions: which alignment is allowed for the race
  • Allowed Mixins: Which bloodlines are allowed for the race.
  • Racial Ranks: Special ranks that are unique to each race.

 

Bloodlines

All races can have some of the other races as "mixins" aka "bloodline". That is effectively a "family tree" indicator to RP the ancestry. Not all races can be mixed together and the limit is usually 3 races which can be mixed to the main one. When the race is mixed, only racial trait is applied, as well as racial appearance - if you happened to have mods that FF4 recognizes (or you've defined the appearance items yourselves). Racial stats are not applied for mixins (we wouldn't want things like +12 to SPECIAL, right?) Another thing is that since the bloodline is the ancestry, none of the racial restrictions are applied when mixing the race - after all, your parents/grandparents have nothing to do with your actions.

 

Appearance

Fallout Fantasy  does not alter any appearances. You are left on your own to design your changes. For example, choosing elves will not grow you pointy ears. That being said, there is still a way to customize races without involving the slm. These are appearance items. By default FF4 comes with some definitions for racial appearance items - almost every race has a defined list of armor forms which will be attempted to equip when the race is added (either a main one or a mixin). If the corresponding mod is installed - the racial appearance armor item will be equipped. You can, however, control this behavior:

 

  • For starters, you can disable it completely. That is in case you don't want armor-based appearance changes
  • Or you can set it to "custom" and define your own items as appearance. Be warned though, the mod does no checks here - so if you mess up it's on you. And there are a lot of ways to mess up, to name a few:
    • Try to define items from different races on the same slot(s) and then mixing those races. This will hurt badly
    • Try to define the same item on the appearance for different races
    • Or who knows, maybe the mod just glitches - I only barely tested this corner of appearance changes

 

 

Races List

The 10 races of Fallout⁴ Fantasy are (alphabetical order):

 

Angels

The name speaks for itself. This race is for all the "want to be good, bring the light" minds.

Racial Feat: Flight. Yep, you'll be able to fly around, no strings attached. You will not take fall damage and there's generally no restrictions on the ability.

Racial Proficiency: See the Terminal entry (documented in-mod)

Alignment Restrictions: See the Terminal entry (documented in-mod)

Allowed Mixins: Dark Elves, Light Elves, Nymphs, Vampires

Racial Stats: +4 Charisma

Racial Ranks: None

Special notes:

  • Winged: Angels cannot use Power Armor
  • Indomitable Bloodline: Angelic bloodline is too strong and cannot be mixed to anything else. As such, angels can't be a mixin race to anything else (i.e. the only way to obtain the angelic traits is to chose angels as the main race, there's no way to have it as a bloodline). Angels can also have up to 4 bloodline races as compared to normal 3 (same in-lore reason, balance reason - no racial ranks)
  • Selfless: No racial ranks. Angels is the only race that does not have racial ranks. In-lore reason: angels are selfless and do not care about power, ranks or hierarchies. Therefore they do not have the concept of racial ranks

 

Beastfolk

All you "foxgirls" and "catgirls" lot. Though no tails or ears are bundled unless you have some appearance mods that FF4 recognizes..

Racial Feat: Uncanny Reflexes: Immune to fall damage and can jump a lot higher.

Racial Proficiency: See the Terminal entry (documented in-mod)

Alignment Restrictions: See the Terminal entry (documented in-mod)

Allowed Mixins: Demons, Orcs, Devils

Racial Stats: +2 Strength, +2 Perception, -2 Intelligence, +2 Agility

Racial Ranks: Soonᵀᴹ

Special notes:

  • Independent: Beastfolk cannot be a mixin race (just as for instance, humans or angels)

 

Dark Elves

These are elves. Dark elves - the classic tanned long-eared long-lived beings. With one difference from the classic - dark elves are not "evil" in FF4, and on the contrary they are an esteemed race that hold same respect as their lighter-skinned cousins.

Racial Feat: Dark Elvish Grace: Do more damage at night, but receive more damage during the day.

Racial Proficiency: See the Terminal entry (documented in-mod)

Alignment Restrictions: See the Terminal entry (documented in-mod)

Allowed Mixins: Light Elves, Nymphs, Vampires

Racial Stats: +2 Perception, +2 Charisma

Racial Ranks: Soonᵀᴹ

 

Demons

The "baddies". Specifically - "I will destroy everything and everyone just because it's fun" type. The villains that enjoy to be villains for the pure sake of being a villain. Well, you've been warned..

Racial Feat: Sight: Demons recognize enemies from far away (highlight over hostile actors)

Racial Proficiency: See the Terminal entry (documented in-mod)

Alignment Restrictions: See the Terminal entry (documented in-mod)

Allowed Mixins: Orcs, Devils, Vampires

Racial Stats: +2 Strength, +2 Agility

Racial Ranks: Soonᵀᴹ

 

Devils

Also "baddies", but these are organized. The methodical dominance and intentional, planned harm is their way. They are honoring a good contract and don't back down on the bargain that's made. Still, they want to get the souls, as you can imagine. So join them if that floats your boat. One caveat though - devils can only be male.

Racial Feat: Luck of the devils: When performing an unarmed melee attack there's 1/6 chance to deal 666 times the normal damage (aye, absurd and needs a lot of balancing, but the numbers look funny)

Racial Proficiency: See the Terminal entry (documented in-mod)

Alignment Restrictions: See the Terminal entry (documented in-mod)

Allowed Mixins: Orcs, Demons, Vampires

Racial Stats: -2 Perception, +2 Charisma, +2 Luck

Racial Ranks: Soonᵀᴹ

Special notes:

  • Dominance: Devils can only be male

 

Humans

Well, it wouldn't be a fantasy without the human race, right? At least to have a way to show how much different all the others are. But humans still have their trait nonetheless.

Racial Feat: Survival: get +1 feat point for every class that you have.

Racial Proficiency: See the Terminal entry (documented in-mod)

Alignment Restrictions: See the Terminal entry (documented in-mod)

Allowed Mixins: Devils, Demons, Vampires

Racial Stats: +1 Strength, +1 Endurance, +1 Intelligence, +1 Luck

Racial Ranks: Soonᵀᴹ

Special notes:

  • Independent: Humans cannot be a mixin race (just as for instance, beastfolk or angels)

 

Light Elves

These are also elves.  But these are classic "noble, graceful and light-skinned". They are getting their power from the light of day, so naturally, they prefer the day activities. They also are considered the "good" race just as the dark elves.

Racial Feat: Dark Elvish Grace: Do more damage during the day, but receive more damage at night

Racial Proficiency: See the Terminal entry (documented in-mod)

Alignment Restrictions: See the Terminal entry (documented in-mod)

Allowed Mixins: Dark ElvesNymphs, Vampires.

Racial Stats: +2 Charisma, +2 Intelligence

Racial Ranks: Soonᵀᴹ

 

Nymphs

Forest dwellers, close to spiritual parts of the world. They do not like civilization of humans, but get along well with elves. The inspiration here is the "beautiful, pure and wild" depiction. And of course, nymphs can only be female.

Racial Feat: Boon Of Nature: Completely immune to radiation, poison and unarmed attacks.

Racial Proficiency: See the Terminal entry (documented in-mod)

Alignment Restrictions: See the Terminal entry (documented in-mod)

Allowed Mixins: Dark Elves, Light Elves, Vampires

Racial Stats: -2 Strength, +4 Charisma, +2 Agility

Racial Ranks: Soonᵀᴹ

Special notes:

  • Child Of Nature: Nymphs hate the tools of war and cannot use Power Armor.
  • Diva: Nymphs can only be female.

 

Orcs

The green men, I suppose? Well, up to you. In FF4 they are not green anyways (unless you customize it like that). These are the glorified warriors, the tribal folks. You know, the usual cliches.

Racial Feat: Trained warrior: Drastically increases damage output as more damage was received.

Racial Proficiency: See the Terminal entry (documented in-mod)

Alignment Restrictions: See the Terminal entry (documented in-mod)

Allowed Mixins: Devils, Demons, Vampires

Racial Stats: +4 Strength, +2 Endurance, -2 Charisma

Racial Ranks: Soonᵀᴹ

 

Vampires

Last but not least, another stamp, the blood-dependent vampires. They are not (yet) really dependent on the blood, but they benefit from it somewhat.

Racial Feat: Bloodlust: Melee and unarmed attacks restore health.

Racial Proficiency: See the Terminal entry (documented in-mod)

Alignment Restrictions: See the Terminal entry (documented in-mod)

Allowed Mixins: Dark Elves, Light Elves, Nymphs

Racial Stats: -2 Perception, +4 Intelligence, +2 Agility

Racial Ranks: Soonᵀᴹ

 

Fallen Races

Now, the list of 10 races happens to be not everything that FF4 has to offer races-wise. You see - there are restrictions on almost all races. And you have to stick to those restrictions. Otherwise you will fall from the racial grace and become a "fallen" variant of the main race you were before. Important thing to note is that it only concerns main race, mixins do not play any role here (and why would they - your parents / grandparents races have nothing to do with it).  Still, with this in mind there are additional 9 races - the "fallen" versions of each race apart from Humans. Yes, another one of the Human race's special traits is that you can't "fall" from the racial grace there: humans are so diverse in culture, values and all around it that there's simply nothing to "fall from".

 

So in the end, FF4 has 19 races and you can mix at least 3 of them to the main one meaning you get C(19, 4) = 3876 possible combinations to play with. Or so does the math say.

Posted

CLASSES

 

FF4 also has the fully functional concept of a class. It basically defines what the character is "doing" and specializes in. With the classes, the leveling model also changes - you gain levels not "just of a character", but "of a class".  This means that you progress in your class and you need to chose your class for progressing when leveling up. There are five classes in FF4:

 

  • Warrior
  • Mage
  • Cleric
  • Rogue
  • Ranger

 

Every class comes with its abilities and traits. Each class also allows class proficiency - the ability to use certain items "out of the box". Example of unique trait is rogue - only them and their derivatives can use sneaking (you will be denied from crouching if you aren't a rogue class). When you level up in the class, you will also get random amount of HP according to the hit dice roll of the class you've chosen to level up.

 

Warrior

These are your classic "run-n-gun" guys. They are the most diverse with their proficiency and can use almost every weapon / armor out of the box. Class traits:

Hit Dice: 1d10

Trait: Soonᵀᴹ

Class Proficiency: See the Terminal entry (documented in-mod)

Elite Classes: Knight, Paladin

 

Mage

Spell-casters and "the most genius of them all" types. Get spells when leveling up, but they don't have items affinity, so their choice of weapons is fairly limited.

Hit Dice: 1d6

Trait: 10% spell cooldown reduction

Class Proficiency: See the Terminal entry (documented in-mod)

Elite Classes: Wizard, Sorcerer

 

Cleric

Ah, the saviors of them all, the pure and naive clerics. The healers, in other words. Also have spells, but those are mostly for self-sustain and alike.

Hit Dice: 1d8

Trait: +2 to the Divine Spell School spell power

Class Proficiency: See the Terminal entry (documented in-mod)

Elite Classes: Blackguard, Guardian

 

Rogue

The sneaky-tricky guys. The only one that can use sneak in-game (yep, you will not be able to sneak at all if you aren't a rogue). They also like mines.

Hit Dice: 1d8

Trait: Can use sneak attacks (and sneak, obviously)

Class Proficiency: See the Terminal entry (documented in-mod)

Elite Classes: Assassin, Ninja

 

Ranger

Sharpshooters and masters of the ranged combat. One would guess they'd be the most OP in the world of ranged guns, but I think rogues can give them a tough time.

Hit Dice: 1d8

Trait: Soonᵀᴹ

Class Proficiency: See the Terminal entry (documented in-mod)

Elite Classes: Sniper, Druid

 

Elite Classes

Every class can be evolved to its "elite" version. And each class has two different elite variants. At the moment not all the elite variants are implemented with their traits, i.e. some are just there and you can evolve your class into it, but it will do nothing (i.e. no trait or feats will be granted). You may not want to evolve your base class to an elite variant at all - reason being that while elite classes have these unique abilities, they gain regular feats slower: base classes gain feats every 3 levels while elite classes only every 4 levels

 

Warrior > Knight

Hit Dice: 1d12

Trait: Weapon Of Choice. Knights focus on one specific weapon (by Form) and then they get improvements based on the chosen weapons. These improvements are the feats which are unlocked as the knight class level progresses. Weapon Of Choice provides with different feats for melee and ranged weapons, but only one weapon can be marked as the chosen.

 

Warrior > Paladin

Hit Dice: 1d10

Trait: Divine Shield: a buffer passive shield measured in points. While the shield points are above zero, paladins receive less damage. There's a whole lot of feats to improve this feat (such as expending less point based on damage type or enemy race).

 

Mage > Wizard

Hit Dice: 1d6

Trait: Spell Prodigy: 10% longer Spells Duration

 

Mage > Sorcerer

Hit Dice: 1d6

Trait: Spell Prodigy: +2 to the Arcane Spell School and elemental Spell School spell power

 

Cleric > Blackguard

Hit Dice: 1d8

Trait: Cursed Teachings: +4 to the Necromantic Spell School  spell power (alas, there are no spells of this school yet added, but the intent is "raising the dead")

 

Cleric > Guardian

Hit Dice: 1d8

Trait: Divine Vessel: -1 second to all Duration Spells Recast (I.e. if the spell has a duration of 60 seconds and cycles every 6 seconds, Guardians will have it cycled every 5 seconds effectively getting 12 applications instead of 10 in this case)

 

Rogue > Assassin

Hit Dice: 1d8

Trait: Soonᵀᴹ

 

Rogue > Ninja

Hit Dice: 1d8

Trait: Soonᵀᴹ

 

Ranger > Sniper

Hit Dice: 1d8

Trait: Soonᵀᴹ

 

Ranger > Druid

Hit Dice: 1d6

Trait: Soonᵀᴹ

 

As you can see, not all the elite classes are properly implemented. However, just because the class doesn't have the trait, it doesn't make it invalid at all - some of the stats change and available feats will still be applicable, so the uniqueness is certainly there.

 

Spell Casters

There are also spell-casting classes. These gain spells in addition to regular leveling. The higher in-class level you have, the stronger spells you will unlock. You will then need to chose your spells during the level up and those spells will be available for usage. Important thing is that spells are bound to the class, i.e. to the class level, not character overall level. At the moment, some of the mage and cleric spells are implemented and only of the lower tiers.

 

Multi-Classing

You can have up to two classes taken. During the level up you can:

 

  • Progress in your current base class
  • Evolve your base class into its elite variant (if conditions are met)
  • Add new base class to your class list (if you have less than 2 base classes)

 

When leveling up next time you will need to choose which class are you taking the level in and then you gain the benefits of the level in that class accordingly - i.e. available feats, spells and whatnot. As a grand total, you have 5 base + 10 elite classes and you can have a combination of 2 of them (aside from 2 elite classes of the same base class). So you end up with C(15, 2) - 5 = 100 possible class combinations available in-mod. Good luck experimenting.

Posted

FEATS & SPELLS

 

Instead of the standard "Perk" concept, FF4 relies on "feats" and "spells" to customize the character. Not everything is (even close to) implemented and, for instance - spells are done only partially for lower spell level, just as a "proof of concept". In the current state, there are also only spells which target the caster.

 

Feats

Feats are generally some passive abilities that enhance existing mechanics, abilities or attributes. Some feats are granted automatically when selecting the class or race, also known as racial/class traits. Other feats need to be selected when leveling up. Feats are normally granted every 3 levels for all base classes and every 4 levels for all elite classes. Do note that some feats will overlap with the mechanics that vanilla perks have. The original idea was to disable vanilla perks and leveling altogether, but there are engine complications in-game which make it impossible without some sort of F4SE programming which is far beyond my reach.

 

Currently, you will still be able to take perks normally in the pip-boy section and the mod does not prevent it in any way, but in addition you will be able to take feats. It is not how it was originally envisioned and can easily make your character overpowered because of this. I recommend some difficulty-increasing overhaul mods to compensate for this.

 

Proficiency

There's also a special category of feats - proficiency - which allows to use certain items. For instance, if you can't use some category of the items, you still can take the corresponding proficiency feat when leveling up. If you don't have necessary proficiency - you will not be able to use items of that category. The category of items is decided by keywords and not forms. This means that almost any armor item / weapon from some mod will work just fine and recognize its category on the proficiency so long as it follows vanilla game keyword labeling. This also means that when you mod a weapon, you can end up with an item you cannot use whereas before you could (an example is changing stock on a weapon turning if from a pistol to a rifle or vice versa)

 

Spells

Spells are - well, spells that do something and require usage. Spells are available for spellcasting classes and different classes have access to different spells. Spells do not consume any resource, but are limited in usage by cooldown timer. Different spells have different cooldowns. By default, there are also severe limitations on using spells - you can't spellcast with your weapon out, when running etc etc. Most of those limitations can be removed if you have necessary feats that are available for spellcasting classes.

 

When the spell is returned from the cooldown, you get the sound alert and a notification. You can set the spell on the quick button and it will work just fine. Do keep in mind that for compatibility and safety reason, spells check the actor "in scene" / "talking" state and do not trigger when that is on. This means that in some cases the spell may fail to trigger even if it seems there's no reason for it to fail. A known offender here is "Player Comments" mod - it puts PC "in scene" even if there's no one around, for instance - when PC is looking at something (head tracking). If you insist on using this mod - the easiest workaround is to set up a hotkey on disabling the comments and then pressing that key before spellcasting.

 

All spells are divided by spell levels and spell schools. Spell levels are related to character levels, but aren't exactly the same. You can think of it as a progression - i.e. the higher is the character level in the spellcasting class, the higher level spells will be available for the character in that class. There are also 5 spell schools:

 

  • Arcane. Purpose: enchanting, transmutation and other special spells. Mage class domain.
  • Divine. Purpose: support, healing and strengthening. Cleric class domain, though Paladins should get some access too.
  • Elemental. Purpose: combat magic, offensive spells. Mage class domain.
  • Necromantic. Purpose: raise dead, life manipulation etc. Blackguards class domain.
  • Spiritual. Purpose: nature based spells, special spells. Druid class domain.

 

Most of the spells schools are yet just a name and have no spells defined. But the mechanics around the spells schools (such as conditional spell power increase) should be working already. Here's the spells list that is added currently:

 

Bear Might

Caster increases their own strength by Charisma modifier for the duration of the spell.

Spell School: Divine

Spell Level: 2

Target: Caster Only

Primary Attribute: Charisma

Saving Throw: N/A

Cooldown: 60 seconds (minimum 40)

Duration: 30 seconds (maximum 40)

 

Bull Endurance

Caster increases their own endurance by Charisma modifier for the duration of the spell.

Spell School: Divine

Spell Level: 2

Target: Caster Only

Primary Attribute: Charisma

Saving Throw: N/A

Cooldown: 60 seconds (minimum 40)

Duration: 30 seconds (maximum 40)

 

Cure Wounds

Caster restores own health by 1d6 x Charisma modifier.

Spell School: Divine

Spell Level: 2

Target: Caster Only

Primary Attribute: Charisma

Saving Throw: N/A

Cooldown: 120 seconds (minimum 60)

Duration: N/A

 

Diamond Shield

Caster increases their own physical damage resistance by Charisma modifier for the duration of the spell.

Spell School: Elemental

Spell Level: 1

Target: Caster Only

Primary Attribute: Charisma

Saving Throw: N/A

Cooldown: 36 seconds (minimum 6)

Duration: 12 seconds (maximum 18)

 

Eagle Splendor

Caster increases their own charisma by Charisma modifier for the duration of the spell.

Spell School: Divine

Spell Level: 2

Target: Caster Only

Primary Attribute: Charisma

Saving Throw: N/A

Cooldown: 60 seconds (minimum 40)

Duration: 30 seconds (maximum 40)

 

Fox Cunning

Caster increases their own intelligence by Charisma modifier for the duration of the spell.

Spell School: Divine

Spell Level: 2

Target: Caster Only

Primary Attribute: Charisma

Saving Throw: N/A

Cooldown: 60 seconds (minimum 40)

Duration: 30 seconds (maximum 40)

 

High Spirit

Caster increases their own maximum health by Charisma modifier for the duration of the spell.

Spell School: Divine

Spell Level: 2

Target: Caster Only

Primary Attribute: Charisma

Saving Throw: N/A

Cooldown: 60 seconds (minimum 6)

Duration: 18 seconds (maximum 48)

 

Mirror Shield

Caster increases their own energy damage resistance by Charisma modifier for the duration of the spell.

Spell School: Elemental

Spell Level: 1

Target: Caster Only

Primary Attribute: Charisma

Saving Throw: N/A

Cooldown: 36 seconds (minimum 6)

Duration: 12 seconds (maximum 18)

 

Owl Wisdom

Caster increases their own perception by Charisma modifier for the duration of the spell.

Spell School: Divine

Spell Level: 2

Target: Caster Only

Primary Attribute: Charisma

Saving Throw: N/A

Cooldown: 60 seconds (minimum 40)

Duration: 30 seconds (maximum 40)

 

Panter Grace

Caster increases their own agility by Charisma modifier for the duration of the spell.

Spell School: Divine

Spell Level: 2

Target: Caster Only

Primary Attribute: Charisma

Saving Throw: N/A

Cooldown: 60 seconds (minimum 40)

Duration: 30 seconds (maximum 40)

 

Regeneration

Caster gains the healing over time for the duration of this spell. Healing per spell application is equal to 1d6 x Charisma modifier.

Spell School: Divine

Spell Level: 3

Target: Caster Only

Primary Attribute: Charisma

Saving Throw: N/A

Cooldown: 600 seconds (minimum 360)

Duration: 60 seconds (maximum 120)

Spell Delay: 6 seconds

 

Bear Might

Caster increases their own strength by Charisma modifier for the duration of the spell.

Spell School: Divine

Spell Level: 2

Target: Caster Only

Primary Attribute: Charisma

Saving Throw: N/A

Cooldown: 60 seconds (minimum 40)

Duration: 30 seconds (maximum 40)

 

Swift Step

Caster increases their own movement speed by Charisma modifier for the duration of the spell.

Spell School: Spiritual

Spell Level: 1

Target: Caster Only

Primary Attribute: Charisma

Saving Throw: N/A

Cooldown: 60 seconds (minimum 6)

Duration:  18 seconds (maximum 30)

 

Time Stop

Caster stops the flow of time for everyone but themselves. In this state caster is unable to move (unlike chems / other effects, this is a full time stop, i.e. nothing outside of caster's perspective really happens). Not recommended to use in places with godrays / misty places as the particles will freeze in space making it difficult to see anything. This spell is likely to cause glitches and bugs.

Spell School: Arcane

Spell Level: 9

Target: Caster Only

Primary Attribute: Intelligence

Saving Throw: N/A

Cooldown: 60 seconds (minimum 30)

Duration: 10 seconds

 

Weasel Luck

Caster increases their own luck by Charisma modifier for the duration of the spell.

Spell School: Divine

Spell Level: 2

Target: Caster Only

Primary Attribute: Charisma

Saving Throw: N/A

Cooldown: 60 seconds (minimum 40)

Duration: 30 seconds (maximum 40)

 

Wind Ladder

Caster increases their own jump height by Charisma modifier for the duration of the spell.

Spell School: Spiritual

Spell Level: 1

Target: Caster Only

Primary Attribute: Charisma

Saving Throw: N/A

Cooldown: 60 seconds (minimum 6)

Duration: 18 seconds (maximum 30)

Posted

ROLE-PLAYING

 

To fulfill the purposes of role-playing, FF4 implements the concept of Alignment and Profile. Both serve as a way to immerse to the character role to some degree and are used in certain systems within the game. Races generally have restrictions on alignment and will transform to their fallen versions if you break the racial alignment aspect. Profile is meant to show your current status, such as stats, classes, titles, feats and many more.

 

Alignment Scores

Alignment is measured in two dimensions - the "order" alignment and the "karma" alignment. These two are tracked mostly independently and are bound by the -100..+100 score of the character. You can see that in the first profile page.

 

Order is the world view of the character that is responsible for things like obeying laws, upholding the given promise and otherwise "playing by the rules". Do note that Order does not have anything to do with "good/evil" character choices. A slaver that methodically enslaves his victims and organizes the crime into an intricate web of agents is very aligned towards the "order" of the things, it's just that those things aren't nice in the least.

 

Karma, on the other hand - is the trail of evil (or good) that the character walked thus far. This is exactly the thing that measures the difference between evil and good deeds. However, just as with order, karma doesn't differentiate the actions which break the law, unless those lead to the consequences that are evil/good for the involved parties.

 

On the far left side of the -100..100 spectrum and on the far right side of it lie the "strong" versions of the alignment. You can think of it as the following table:

 

╔═════════════════╦═════════════════╦═════════════════╦═════════════════╗

║   Karma\Order   ║    -100..-50    ║     -50..+50    ║    +50..+100    ║

╠═════════════════╬═════════════════╬═════════════════╬═════════════════║

║    -100..-50    ║  Chaotic-Evil   ║   Neutral-Evil  ║   Lawful-Evil   ║

╠═════════════════╬═════════════════╬═════════════════╬═════════════════║

║     -50..+50    ║ Chaotic-Neutral ║   True Neutral  ║  Lawful-Neutral ║

╠═════════════════╬═════════════════╬═════════════════╬═════════════════║

║    +50..+100    ║  Chaotic-Good   ║   Neutral-Good  ║   Lawful-Good   ║

╚═════════════════╩═════════════════╩═════════════════╩═════════════════╝

 

The titles are yet just for knowledge and aren't doing anything nor are even displayed, but the racial alignment restrictions system is already in-place and certain races will require to stay within the bounds of their alignment in order to not transform to the fallen version of that race.

 

Conformance. There's also a third and a bit hidden alignment dimension. This is not exactly the "alignment" per say but it acts like one in the sense that your racial worldview is expressed by it. It is your adherence to your racial ideals. For example, if racial culture is set to have some traditions and maybe even demands - failure to do it does not necessarily count as evil/good/chaotic/lawful deed. However you stray away from your racial path and lose connection to your race when you lose conformance.

 

At the moment, conformance is not included into racial requirements for staying in good grace, but when it gets developed enough, it certainly will be. Conformance is one of the conditions to gain racial ranks and should play a major role in the plot, provided that I will add any quests to reflect that. So far there are none.

 

Alignment Changes

Your actions will result in change of alignment. Many of in-game statistics are tracked and then for every point of changed stats you will get the change in alignment. Note, that such changes are not synchronous and it could take a bit of time for alignment to catch up. All 4 main factions in-game are separated by their stance into these classifications:

 

  • Brotherhood: Lawful-Evil - BoS brings order to the Commonwealth and does so a lot (they fight gangs, super-mutants and whatnot), but their ultimate goal is evil as it was shown during the WW2.
  • Institute: Chaotic-Evil - these guys don't even have any agenda, they just experiment and "see what happens" as it was with super-mutants. They bring chaos for little to no gain and they do evil deeds with no doubt about that
  • Railroad: Chaotic-Good - they have a noble goal and they save synth, but they ignore the organization to which those synth belong, therefore making their actions chaotic. They also wipe out the mind of those synth, destroying the order of their previous lives
  • Minutemen: Lawful-Good - not much to be added here. Ultimate goal of this faction in-game is save people and establish communities and maybe bring in central government at some point.

 

as such, helping these factions will shift your alignment accordingly. Some actions will cause heavy changes in alignment, such as murder. This is intentional and it goes to show that even 1 murder will throw you off the racial grace of, say, angels (one absolutely cannot be an angel and kill innocents). Here's what is added so far:

 

  • Trespassing
  • Murders
  • Eating Corpses
  • Picking Pockets
  • Addictions
  • Cheating on your partner (only if sexuality module is active and the conditions are right)
  • Being faithful to your partner (only if sexuality module is active and the conditions are right)

 

It is generally far easier to gain chaotic and evil directions in your alignment. It might make no sense from the game balance point of view, but it does make a lot of sense from the immersion point of view, so I stuck with the latter.

 

Profile Page

The profile page is available from the chems pip-boy menu and therefore can be put on the hotkey. It displays up to date information as a "note" with several pages. Those pages will change their content according to your character status. Depending on the performance of your PC it can take several seconds before the profile will be displayed - simply because there's a lot of stuff to calculate and format (it uses the Fallout's pseudo-html mark-up).

 

Profile page consists of several sections and I tried to make them cached as much as I could so that you won't need to wait for all of them to be generated again and again, but not everything can be cached so performance could still be an issue. The sections are:

 

  • Dossier: all the general information - Photo, Name, Gender, Racial Title, Lineage, Bloodline, Classes and SPECIAL stats
  • Feats: the least of all known feats to the character, including racial / class traits and proficiency
  • Sexuality: a special adult-themed section that will be updated according to the LL mods you have installed in case FF4 recognized them (details later)

 

It's worth mentioning that you can have your character profile picture displayed instead of the dummy that is bundles with the mod. You will need to replace Data\Textures\interface\FF4\character\Profile.dds with your own picture and then it will be displayed in-game. Please note, that the picture must be 16-aligned (i.e. be a power of 16) in resolution in order to work properly. If you will try to add a picture of something like 343x221 - your game might crash.

 

Appearance Mods

FF4 recognizes some of the appearance mods by default. But you can always change the appearance to the "custom" mode in case you don't want / don't like the default appearance. Still, for completeness, I will list the mods which FF4 will make use of. None of this is required in any case. No assets from these mods were used in any ways in FF4. Here's the list:

 

Ero Selene Armor: Wings for angels and fallen angels. You will probably want to build it for your body and use some conversion mods to make it fit perfectly. Otherwise you might find the wings being not properly attached to the character.

CROSS Halo: Halo for angels and horns for demons and devils.

Castanic Horns Pack: Horns for fallen demons and devils.

Animal Ears: Ears for beasfolk and fallen beastfolk. As with other resources, despite using the same mod for both, the ears will be different for original and fallen races.

French Nails: The nails for dark elves. You most certainly will need to build it for your character, especially if not using CBBE. I assume that if you have the mod installed, you have it also properly configured. Otherwise you will have glitches such as gaps in the hands area.

Chain Bikini: Stockings for nymphs (black for original nymphs and red for fallen nymphs). As usual, make sure you have it properly built and/or converted to your body.

 

Apart from that I have compiled a list of mods that I would recommend to try with the appearance for your races. These are not the mods which FF4 will recognize - and now that I added the customization options for the equippable appearance items I will stop expanding the default mods list as it will serve not much purpose. Some of these mods are pure appearance and you will need to use looks menu to apply them:

Spoiler

Race Class Category Summary Male? Female? Link1 Link2 Comment
Angels --- Armor Armor, Wings --- Yes Go   Males: wings only
Angels --- Visuals Eyes Yes Yes Go    
Angels --- Accessory Halo Yes Yes Go    
Angels --- Accessory Halo Yes Yes Go   Has both halo and horns
Angels --- Overhauls Pacification --- --- Go   Potentially for all "good races"
Angels --- Overhauls Pacification --- --- Go   Potentially for all "good races"
Beasts --- Accessory Whiskers --- Yes Go   Male needs to be checked
Beasts --- Accessory Ears, Tails Yes Yes Go    
Beasts --- Accessory Tails Yes Yes Go    
Beasts --- Race Face, Body Yes Yes Go   Race, therefore low compatibility
Beasts --- Accessory Claws No Yes Go    
Beasts --- Visuals Eyes Yes Yes Go    
Beasts --- Visuals Ears Yes Yes Go    
Dark Elves --- Visuals Face, Ears Yes Yes Go    
Demons --- Armor Armor, Wings No Yes Go    
Demons --- Visuals Face, Ears Yes Yes Go    
Demons --- Visuals Tatoo --- Yes Go   Male needs to be checked
Demons --- Accessory Claws No Yes Go    
Demons --- Visuals Eyes Yes Yes Go    
Demons --- Armor Armor, Horns No Yes Go   Modern interpretation
Demons --- Accessory Horns Yes Yes Go   Has both halo and horns
Demons --- Armor Armor, Skull Yes --- Go   Female needs to be checked
Demons --- Armor Armor, Horns, Wings Yes Yes Go Go Male is homo-oriented
Demons --- Accessory Horns --- Yes Go   Male needs to be checked
Devils --- Visuals Face, Ears Yes Yes Go    
Devils --- Accessory Horns Yes Yes Go   Has both halo and horns
Devils --- Visuals Body Yes No Go   Male only body
Devils --- Armor Armor, Skull Yes --- Go   Female needs to be checked
Devils --- Accessory Horns --- Yes Go   Male needs to be checked
Light Elves --- Visuals Face, Ears Yes Yes Go    
Nymphs --- Visuals Face, Ears Yes Yes Go    
Nymphs --- Armor Armor No Yes Go    
Orcs --- Accessory Claws No Yes Go    
Orcs --- Armor Armor, Helmet Yes Yes Go    
Orcs --- Animations Idle Yes No Go    
Orcs --- Visuals Body Yes No Go   Male only body
Vampires --- Armor Armor No Yes Go    
Vampires --- Armor Armor Yes Yes Go Go Male is homo-oriented
Vampires --- Armor Armor Yes Yes Go Go Replacer
Vampires --- Visuals Eyes Yes Yes Go    
Vampires --- Armor Armor No Yes Go    
--- Assassin Weapon Katana Yes Yes Go    
--- Ranger Armor Armor Yes Yes Go    
--- Druid Armor Armor Yes Yes Go    
--- Guardian Power Armor Armor Yes Yes Go   Modern interpretation
--- Ninja Weapon Dagger Yes Yes Go   Modern interpretation
--- Ninja Armor Masks --- Yes Go   Male needs to be checked
--- Ranger Armor Armor Yes Yes Go    
--- Ranger Weapon Bow Yes Yes Go    
--- Sniper Weapon Crossbow Yes Yes Go    
--- --- Animations 1H Melee Weapons Yes Yes Go    
--- --- Animations 3rd Person All Yes Yes Go    
--- --- Animations 2H Melee Weapons Yes Yes Go    
--- --- Armor Armor No Yes Go    
--- --- Armor Armor Yes Yes Go Go Male is homo-oriented
--- --- Armor Armor Yes Yes Go Go Male is homo-oriented
--- --- Armor Armor No Yes Go    
--- --- Armor Armor No Yes Go    
--- --- Armor Armor Yes --- Go   Female needs to be checked
--- --- Clothing Dress No Yes Go   HDT physics on clothing
--- --- Clothing Dress, Suit Yes Yes Go    
--- --- Clothing Dress, Suit, Hat Yes Yes Go    
--- --- Weapon 1H Sword Yes Yes Go    
--- --- Weapon Basic weapons Yes Yes Go    
--- --- Clothing Dress, Costume No Yes Go    
--- --- ENB Visuals --- --- Go    
--- --- ENB Visuals --- --- Go    
--- --- Environment Grass --- --- Go   Performance killer
--- --- Environment Water --- --- Go    
--- --- Environment Water --- --- Go    
--- --- Environment Trees --- --- Go    
--- --- Environment Trees --- --- Go    
--- --- Environment Visuals --- --- Go    
--- --- Environment Moon --- --- Go    
--- --- Environment Sky --- --- Go    
--- --- Environment Sky --- --- Go    
--- --- Environment Visuals --- --- Go    
--- --- Visuals Tatoo --- Yes Go   Male needs to be checked
--- --- Settlement Castle Building Set --- --- Go    
--- --- Settlement Castle Elements --- --- Go    

 

Of course, much of the race/class division is purely subjective. But - that will provide you with a good start for making your character look unique and according to the race / class you like. I will not add my own visuals / armor / weapon items into the mod - at least not at this stage. There are plenty of dedicated mods which will do a much better job, so you can use the links above.

Posted

SEXUALITY & MODS

 

As this mod is hosted on LL, you bet it also brings in some .. naughty gameplay elements. However, by itself it doesn't do much and it requires certain mods to be installed and enabled for this to work. The basic idea is that different races have different cultures and their sexual preferences change accordingly. Some might be traditions, some derived from society and others are just for fun or testing purposes with not much in-lore reasoning because the mod is not even in alpha-version.

 

Extensions

FF4 utilizes the internal racial plugins system. It allows to expand the racial properties and definitions with anything, really - so long as it follows the specific protocol and defines the necessary methods. You can find all the documentation about that in the code. Unlike the user-oriented info, the modder-oriented documentation is in the code and I'd say it is well-written.

 

Every extension implemented so far is connected to the mod that it tries to integrate with FF4. Extensions also use internal message broker to exchange information between plugins while still remaining unaware of each other. This architecture is necessary to avoid any dependencies of one extension to another and make it possible to have one but not another or vice versa. You can also read about the message bus in the code documentation lines.

 

Multiple Inheritance

All of the extensions which are implemented so far support the concept of "racial records merge". This means that whenever the character has multiple races defined via bloodlines, their racial rules which are set in the extension, will be merged together to form a new racial record. Simplest case is adding some rules on top of each other, more complex merging rules might involve taking maximum / minimum values for certain restrictions. I will not describe everything here because - first - it's subject to change, and - second - it is done automatically in the scripts and translating it back into words for each race would make it a dozens page long text.

 

Advanced Animation Framework (AAF)

 

Requires: AAF

This would be the prerequisite for the LL mods to work, but this also has an integration into FF4 as a mod. This extension brings in the following record fields for the races:

 

  • Virginity Protection: the race (females and males) don't lose virginity after the sexual act. In itself this is not doing anything, if there are no mods that react to that. The idea also is that virginity has certain penalties and benefits when doing the sexual act. This is only recognized by the AAF History mod - that mod will request FF4 if the actor can lose their virginity during the act - and if they can't, then the sexual history will be recorded quite differently for them. So it's mostly RP element so far, but it works fine between FF4 and AAF History.
  • Sex Dependency: whether or not the race is dependent on sex. If it is, then sex activities must be done regularly.
  • Sex Hours: if the race is sex dependent, this indicates how often the character must engage into sexual activities
  • Last Sex Hour: last hour when the sexual activity occurred.
  • Punishment Level: the current level of punishment that the character suffers due to failing to satisfy the sexual desires. It grows the more you ignore it.
  • Maximum Punishment:  the maximum level which will be incurred. Punishment will not accumulate beyond that.

 

Now, punishment is not your regular "lost SPECIAL stat here and there". Nope, this mod extension will make you do your bidding. Not all the punishment levels are properly implemented and some are buggy, but here's the rundown:

 

  • Level 0: Arousal - complete AP drain
  • Level 1: Desire - cannot sprint / run
  • Level 2: Lust - periodic damage
  • Level 3: Sadness - carry weight is reduced to 0
  • Level 4: Loneliness - damage output is 0
  • Level 5: Despair - periodic stagger
  • Level 6: Dereliction - any incoming damage causes death
  • Level 7: Disavowal - death

 

So.. yep. Ignore too much and you end up dead. D.E.A.D - as one certain doctor likes to say. For this reason I would not recommend to enable "Adult content" in the MCM menu - once enabled, it cannot be disabled and then you end up with the recurring necessity to do sexual activities which may be annoying, especially given the fact that for testing purposes the Sex Hours value for all races is set quite low.

 

Now, as far as the values for specific races go, it would be a long table to put here and even more difficult to maintain up to date, so I just quote the relevant code fragment which hopefully illustrates the situation (scroll right to see the racial comment):

 

Spoiler

 





AddRaceRecord(RaceAPI.GetRaceByIndex(0, callerId), RaceOrigin, VirginForever, SexDependent, 16,  7, callerId)  ; Angel
AddRaceRecord(RaceAPI.GetRaceByIndex(0, callerId), RaceFallen, VirginOneTime, SexDependent, 20,  5, callerId)  ; Fallen Angel
AddRaceRecord(RaceAPI.GetRaceByIndex(1, callerId), RaceOrigin, VirginOneTime, SexUnreliant,  0, -1, callerId)  ; Beast
AddRaceRecord(RaceAPI.GetRaceByIndex(1, callerId), RaceFallen, VirginOneTime, SexDependent,  0,  3, callerId)  ; Fallen Beast
AddRaceRecord(RaceAPI.GetRaceByIndex(2, callerId), RaceOrigin, VirginOneTime, SexDependent, 16,  5, callerId)  ; Dark Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(2, callerId), RaceFallen, VirginOneTime, SexDependent, 16,  3, callerId)  ; Fallen Dark Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(3, callerId), RaceOrigin, VirginOneTime, SexDependent, 24,  3, callerId)  ; Demon
AddRaceRecord(RaceAPI.GetRaceByIndex(3, callerId), RaceFallen, VirginOneTime, SexDependent, 24,  5, callerId)  ; Fallen Demon
AddRaceRecord(RaceAPI.GetRaceByIndex(4, callerId), RaceOrigin, VirginOneTime, SexDependent, 24,  1, callerId)  ; Devil
AddRaceRecord(RaceAPI.GetRaceByIndex(4, callerId), RaceFallen, VirginOneTime, SexDependent, 24,  3, callerId)  ; Fallen Devil
AddRaceRecord(RaceAPI.GetRaceByIndex(5, callerId), RaceOrigin, VirginOneTime, SexUnreliant,  0, -1, callerId)  ; Human
AddRaceRecord(RaceAPI.GetRaceByIndex(5, callerId), RaceFallen, VirginOneTime, SexUnreliant,  0, -1, callerId)  ; Fallen Human
AddRaceRecord(RaceAPI.GetRaceByIndex(6, callerId), RaceOrigin, VirginOneTime, SexDependent, 16,  5, callerId)  ; Light Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(6, callerId), RaceFallen, VirginOneTime, SexDependent, 16,  3, callerId)  ; Fallen Light Elf	
AddRaceRecord(RaceAPI.GetRaceByIndex(7, callerId), RaceOrigin, VirginOneTime, SexDependent, 16,  5, callerId)  ; Nymph
AddRaceRecord(RaceAPI.GetRaceByIndex(7, callerId), RaceFallen, VirginOneTime, SexDependent, 16,  5, callerId)  ; Fallen Nymph
AddRaceRecord(RaceAPI.GetRaceByIndex(8, callerId), RaceOrigin, VirginOneTime, SexUnreliant,  0, -1, callerId)  ; Orc
AddRaceRecord(RaceAPI.GetRaceByIndex(8, callerId), RaceFallen, VirginOneTime, SexDependent,  0,  3, callerId)  ; Fallen Orc
AddRaceRecord(RaceAPI.GetRaceByIndex(9, callerId), RaceOrigin, VirginOneTime, SexDependent, 20,  5, callerId)  ; Vampire
AddRaceRecord(RaceAPI.GetRaceByIndex(9, callerId), RaceFallen, VirginOneTime, SexDependent, 20,  5, callerId)  ; Fallen Vampire

 

 

AAF History

 

Requires: AAF History v1.17+

Now this one has much more intricate rule set. It is similar to default "AAF" extension, but it differentiates the sex activities by "type" and "position". "Type" is indicating if the act was aggressive-active, aggressive-passive or usual (i.e. none of the former two). "Position" indicates which kind of activity it was - you know - well, which.. eeh.. hole was used. It goes to say that this extension relies completely on AAF History to evaluate the scene so whichever settings were set in AAF History will be propagated back to this extension.

 

This mod extension brings in the following racial records:

 

Monogamous: signifies if the race is bound to a single partner. The "imprint" happens during the first act, so be mindful of what you're doing! And yep, non-consensual acts.. do the imprint as well! This is to bring in a bit.. spiciness to the whole thing. After your character got imprinted, any activity with a different actor involved will be counted as cheating and some punishment will follow. Different races react differently on cheating and so far there are these types of punishment:

 

  • Falling - immediate fall from racial grace (transformation to a fallen version of the main race). So far applies to Angels only.
  • Infidelity - alignment change (towards chaotic and evil). Applies to everyone else. So be mindful - if your race tracks alignment, cheating enough time will also cause you to fall from racial grace. It's just it won't be as unconditional and immediate as it is for angels.

 

Apart from punishment for cheating, there's also a reward for being loyal. If your character engages into the activity with their partner, then you will get a slight alignment shift towards lawful/good direction. Be mindful, however - this only happens if your character did not ever cheat on your partner! If you cheated even once, this bonus won't be applied from that moment on. This is to prevent going "willy-nilly" on the side and then retracting the alignment damage by "being loyal" again (ah.. I wish real life worked this way)

 

Sex Type Dependent: signifies dependency on the type of the sexual act. If true, then the character will need to engage into certain type of sexual activity regularly.

 

Sex Position Dependent: signifies dependency on the position of the sexual act. If true, then the character will need to engage into certain position of sexual activity regularly.

 

Sex Hours: similar to AAF extension, sets how often must the activity be fulfilled. Do note that your character may end up with multiple needs due to his/her bloodlines and in this case they will need to fulfill them all during the given time.

 

Sex Type: The type which is necessary for the character. There are three values which are possible for the race:

  • "A" - "aggressive" - the character must engage into an aggressive act and be in active role in it (strong dominance fetish)
  • "P" - "passive" - the character must engage into an aggressive act and be in passive role in it (extreme submission fetish)
  • "N" - "neutral" - the character must engage into consensual acts, regardless of the role

When merged together from different bloodlines, the string may look something like "AN" - meaning that the character must do both consensual and aggressive-active acts to fulfill this sexuality rule.

 

Sex Position: The position which is necessary for the character. There are three values which are possible for the race, "A", "O" and "V" - each one as a first letter for the "used hole". Similarly to the sex type, it may end up as "AV" or "AO" after merging and the character must fulfill them all to make it count. Do note that a single scene might yield several positions, it all depends on what AAF history will return.

 

Cheated: Whether or not the character has cheated, even once. Used to determine if the bonus for being faithful should be granted.

 

Last Sex Hour(s): Multiple values for the specific type and position. This is tracking the rules satisfaction to apply punishments if necessary. Acts similarly to the AAF measures, it's just that there are a lot more things to keep track of.

 

Punishment Level(s): One for type and position. This is the corresponding level of punishment for failing to obey the rules on the type or position correspondingly.

 

Punishment Max Level(s): Again, one for type and position. Sets how high can be the related punishment level - be it for type or position.

 

Sex Partner: An actor reference to the partner that the character has the first act with. Note, that it has an interesting consequence in the game world - should that actor die or become unavailable for another reason, there will be only two outcomes for the PC: either "cheat" and receive full punishment for that - or do nothing and wait till the punishment level kicks in. The former often means falling from racial grace, the latter could mean death. So, PSA: think whom to chose as your partner and when done, be careful with them and treasure them!

 

Yet again, I will only post the code fragment to indicate the racial records for this extension. Writing it in words would be an essay:

 

Spoiler




;male; note: AES cannot properly handle "submissive males / dominant females", hence there must be no "P" entries for Type scale!
AddRaceRecord(RaceAPI.GetRaceByIndex(0, callerId), RaceOrigin, SexMale, Monogamous, SexTypeUnreliant, SexPositionDependent, 16, "N", "O",    "PunishmentFalling", -1,  5,  1,  2, 99, 98, callerId) ; Angel
AddRaceRecord(RaceAPI.GetRaceByIndex(0, callerId), RaceFallen, SexMale, Polygamous, SexTypeDependent, SexPositionUnreliant, 20, "A",  "",                     "",  3, -1,  5, 10, 90, 80, callerId) ; Fallen Angel
AddRaceRecord(RaceAPI.GetRaceByIndex(1, callerId), RaceOrigin, SexMale, Polygamous, SexTypeUnreliant, SexPositionUnreliant,  0,  "",  "",                     "", -1, -1, 10, 20, 80, 60, callerId) ; Beast
AddRaceRecord(RaceAPI.GetRaceByIndex(1, callerId), RaceFallen, SexMale, Polygamous, SexTypeUnreliant, SexPositionUnreliant,  0,  "",  "",                     "", -1, -1, 10, 15, 80, 65, callerId) ; Fallen Beast
AddRaceRecord(RaceAPI.GetRaceByIndex(2, callerId), RaceOrigin, SexMale, Monogamous, SexTypeUnreliant, SexPositionDependent,  8, "N", "A", "PunishmentInfidelity", -1,  7,  5, 10, 85, 85, callerId) ; Dark Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(2, callerId), RaceFallen, SexMale, Polygamous, SexTypeUnreliant, SexPositionDependent,  8, "A", "A",                     "", -1,  3, 10, 20, 80, 75, callerId) ; Fallen Dark Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(3, callerId), RaceOrigin, SexMale, Polygamous, SexTypeDependent, SexPositionUnreliant, 24, "A",  "",                     "",  3, -1, 10, 25, 66, 66, callerId) ; Demon
AddRaceRecord(RaceAPI.GetRaceByIndex(3, callerId), RaceFallen, SexMale, Polygamous, SexTypeDependent, SexPositionUnreliant, 24, "A",  "",                     "",  3, -1, 10, 20, 65, 65, callerId) ; Fallen Demon
AddRaceRecord(RaceAPI.GetRaceByIndex(4, callerId), RaceOrigin, SexMale, Polygamous, SexTypeDependent, SexPositionUnreliant, 24, "A",  "",                     "",  3, -1,  6, 16, 66, 66, callerId) ; Devil
AddRaceRecord(RaceAPI.GetRaceByIndex(4, callerId), RaceFallen, SexMale, Polygamous, SexTypeDependent, SexPositionUnreliant, 24, "A",  "",                     "",  3, -1, 16, 16, 77, 77, callerId) ; Fallen Devil
AddRaceRecord(RaceAPI.GetRaceByIndex(5, callerId), RaceOrigin, SexMale, Polygamous, SexTypeUnreliant, SexPositionUnreliant,  0,  "",  "",                     "", -1, -1, 15, 25, 65, 50, callerId) ; Human
AddRaceRecord(RaceAPI.GetRaceByIndex(5, callerId), RaceFallen, SexMale, Polygamous, SexTypeUnreliant, SexPositionUnreliant,  0,  "",  "",                     "", -1, -1, 15, 25, 65, 50, callerId) ; Fallen Human
AddRaceRecord(RaceAPI.GetRaceByIndex(6, callerId), RaceOrigin, SexMale, Monogamous, SexTypeUnreliant, SexPositionDependent, 16,  "", "V", "PunishmentInfidelity", -1,  7,  5,  8, 80, 80, callerId) ; Light Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(6, callerId), RaceFallen, SexMale, Polygamous, SexTypeUnreliant, SexPositionDependent, 16, "A", "V",                     "", -1,  3, 10, 10, 70, 65, callerId) ; Fallen Light Elf	
AddRaceRecord(RaceAPI.GetRaceByIndex(7, callerId), RaceOrigin, SexMale, Polygamous, SexTypeDependent, SexPositionUnreliant, 16,  "",  "",                     "",  7, -1,  0,  0, 99, 99, callerId) ; Nymph
AddRaceRecord(RaceAPI.GetRaceByIndex(7, callerId), RaceFallen, SexMale, Polygamous, SexTypeDependent, SexPositionUnreliant, 16,  "",  "",                     "",  5, -1, 10, 10, 99, 99, callerId) ; Fallen Nymph
AddRaceRecord(RaceAPI.GetRaceByIndex(8, callerId), RaceOrigin, SexMale, Polygamous, SexTypeUnreliant, SexPositionUnreliant,  0,  "",  "",                     "", -1, -1, 15, 20, 65, 50, callerId) ; Orc
AddRaceRecord(RaceAPI.GetRaceByIndex(8, callerId), RaceFallen, SexMale, Polygamous, SexTypeUnreliant, SexPositionUnreliant,  0, "A",  "",                     "", -1, -1, 10, 20, 65, 55, callerId) ; Fallen Orc
AddRaceRecord(RaceAPI.GetRaceByIndex(9, callerId), RaceOrigin, SexMale, Monogamous, SexTypeDependent, SexPositionUnreliant, 20, "N",  "",                     "",  5, -1,  8, 16, 64, 80, callerId) ; Vampire
AddRaceRecord(RaceAPI.GetRaceByIndex(9, callerId), RaceFallen, SexMale, Polygamous, SexTypeDependent, SexPositionUnreliant, 20, "A",  "",                     "", -1, -1,  8, 16, 50, 64, callerId) ; Fallen Vampire
;female; note: AES cannot properly handle "submissive males / dominant females", hence there must be no "A" entries for Type scale!
AddRaceRecord(RaceAPI.GetRaceByIndex(0, callerId), RaceOrigin, SexFemale, Monogamous, SexTypeUnreliant, SexPositionDependent, 16, "N", "O",    "PunishmentFalling", -1,  5,  0,  0, 99, 99, callerId) ; Angel
AddRaceRecord(RaceAPI.GetRaceByIndex(0, callerId), RaceFallen, SexFemale, Polygamous, SexTypeDependent, SexPositionUnreliant, 20,  "",  "",                     "",  3, -1,  5,  5, 90, 90, callerId) ; Fallen Angel
AddRaceRecord(RaceAPI.GetRaceByIndex(1, callerId), RaceOrigin, SexFemale, Polygamous, SexTypeUnreliant, SexPositionUnreliant,  0,  "",  "",                     "", -1, -1, 10, 20, 80, 60, callerId) ; Beast
AddRaceRecord(RaceAPI.GetRaceByIndex(1, callerId), RaceFallen, SexFemale, Polygamous, SexTypeUnreliant, SexPositionUnreliant,  0,  "",  "",                     "", -1, -1, 10, 10, 80, 65, callerId) ; Fallen Beast
AddRaceRecord(RaceAPI.GetRaceByIndex(2, callerId), RaceOrigin, SexFemale, Monogamous, SexTypeUnreliant, SexPositionDependent, 16,  "", "A", "PunishmentInfidelity", -1,  7,  1,  3, 95, 90, callerId) ; Dark Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(2, callerId), RaceFallen, SexFemale, Polygamous, SexTypeUnreliant, SexPositionDependent, 16,  "", "A",                     "", -1,  3,  5, 10, 90, 90, callerId) ; Fallen Dark Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(3, callerId), RaceOrigin, SexFemale, Polygamous, SexTypeDependent, SexPositionUnreliant, 24,  "",  "",                     "",  3, -1,  5, 10, 80, 70, callerId) ; Demon
AddRaceRecord(RaceAPI.GetRaceByIndex(3, callerId), RaceFallen, SexFemale, Polygamous, SexTypeDependent, SexPositionUnreliant, 24,  "",  "",                     "",  3, -1,  3,  6, 80, 70, callerId) ; Fallen Demon
AddRaceRecord(RaceAPI.GetRaceByIndex(4, callerId), RaceOrigin, SexFemale, Polygamous, SexTypeDependent, SexPositionUnreliant, 24,  "",  "",                     "",  3, -1,  6, 16, 50, 50, callerId) ; Devil
AddRaceRecord(RaceAPI.GetRaceByIndex(4, callerId), RaceFallen, SexFemale, Polygamous, SexTypeDependent, SexPositionUnreliant, 24,  "",  "",                     "",  3, -1,  6, 16, 50, 50, callerId) ; Fallen Devil
AddRaceRecord(RaceAPI.GetRaceByIndex(5, callerId), RaceOrigin, SexFemale, Polygamous, SexTypeUnreliant, SexPositionUnreliant,  0,  "",  "",                     "", -1, -1, 10, 20, 65, 70, callerId) ; Human
AddRaceRecord(RaceAPI.GetRaceByIndex(5, callerId), RaceFallen, SexFemale, Polygamous, SexTypeUnreliant, SexPositionUnreliant,  0,  "",  "",                     "", -1, -1, 10, 20, 65, 70, callerId) ; Fallen Human
AddRaceRecord(RaceAPI.GetRaceByIndex(6, callerId), RaceOrigin, SexFemale, Monogamous, SexTypeUnreliant, SexPositionDependent, 16,  "", "V", "PunishmentInfidelity", -1,  7,  1,  5, 96, 93, callerId) ; Light Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(6, callerId), RaceFallen, SexFemale, Polygamous, SexTypeUnreliant, SexPositionDependent, 16,  "", "V",                     "", -1,  3,  3,  9, 92, 90, callerId) ; Fallen Light Elf	
AddRaceRecord(RaceAPI.GetRaceByIndex(7, callerId), RaceOrigin, SexFemale, Polygamous, SexTypeDependent, SexPositionUnreliant, 16, "P",  "",                     "",  7, -1,  0,  0, 99, 99, callerId) ; Nymph
AddRaceRecord(RaceAPI.GetRaceByIndex(7, callerId), RaceFallen, SexFemale, Polygamous, SexTypeDependent, SexPositionUnreliant, 16, "N",  "",                     "",  5, -1,  2,  5, 90, 90, callerId) ; Fallen Nymph
AddRaceRecord(RaceAPI.GetRaceByIndex(8, callerId), RaceOrigin, SexFemale, Polygamous, SexTypeUnreliant, SexPositionUnreliant,  0,  "",  "",                     "", -1, -1, 10, 20, 65, 70, callerId) ; Orc
AddRaceRecord(RaceAPI.GetRaceByIndex(8, callerId), RaceFallen, SexFemale, Polygamous, SexTypeUnreliant, SexPositionUnreliant,  0,  "",  "",                     "", -1, -1, 10, 15, 65, 70, callerId) ; Fallen Orc
AddRaceRecord(RaceAPI.GetRaceByIndex(9, callerId), RaceOrigin, SexFemale, Monogamous, SexTypeDependent, SexPositionUnreliant, 20, "N",  "",                     "",  5, -1,  2,  8, 88, 80, callerId) ; Vampire
AddRaceRecord(RaceAPI.GetRaceByIndex(9, callerId), RaceFallen, SexFemale, Polygamous, SexTypeDependent, SexPositionUnreliant, 20,  "",  "",                     "", -1, -1,  4,  8, 84, 80, callerId) ; Fallen Vampire

 

 

Oral Handling: Apart from this, there's also a very early development stage (yet it seems to be working somewhat) functionality of treating the "lingual pleasantries".  The character may chose what to do during such an act and that will cause different changes to the racial conformance attribute. For example, females of submissive races like angels or nymphs better behave as good girls do and enjoy the taste. But this goes both ways, of course - males of aggressive races would want to force their partners to "do the right thing" thus failing to do it will cause some penalty.

 

This special functionality will not kick in for any scenes that are reported by the Hardship mod. This is because that mod already has similar functionality and it would make a mess out of all the popup menus. So it will be just ignored during the event handling.

 

Devious Devices

 

Requires: Devious Devices

There's a slight integration with DD as well. What is added here is racial reaction to certain device types. Different cultures have different fetishes and may approve / disapprove equipping certain devices. Some devices may be so welcome that the character gets racial conformance bonus for wearing them. Much of the functionality relies on DD's API calls which I haven't mastered yet, so the results are not yet stable. For instance, equipping the item without locking it in will not result in any conformance change.

 

There are three reaction types that you can expect from the character when equipping the DD:

 

  • Aversion: the character will unequip the device. Racial hatred and all.
  • Neutral: nothing will change, no actions taken
  • Enjoyment: the character will enjoy it and get some racial conformance points.

 

As far as device types go, it supports all basic types defined in the DDA module. Multiple racial records will also be merged into one for several bloodlines meaning that the character may end up enjoying more devices than just the main race (or being averse to more of them). There's nothing else defined right now for DD and it mostly serves as an RP element of "no way I'm wearing this" or "yes, master, thank you" reactions.

 

One thing to add - this all was (somewhat) tested on a female character. Males will have difficulties related to DD mod and display of devices, but the rules of this FF4 extension should work fine. At least that's in theory. Here's the rule set as usual:

 

Spoiler




;                                                           |b-fold| boots |ch.belt|ch. bra|collar |  gag  |gloves |harness|  hood |l.cuffs|n.pierc|pl.anal|pl.vagi| suit  |w.cuffs|
AddRaceRecord(RaceAPI.GetRaceByIndex(0, callerId), RaceOrigin,  0,  0,  0,  0,  0,  0,  0,  0,  1,  5, -1, -1,  0,  0,  0,  0, -1,  0,  1,  1, -1, -5, -1,  0, -1,  0,  0,  0,  1,  1, callerId) ; Angel
AddRaceRecord(RaceAPI.GetRaceByIndex(0, callerId), RaceFallen,  1,  1,  0,  0,  0,  0,  0,  0, -1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  5,  0,  0, callerId) ; Fallen Angel
AddRaceRecord(RaceAPI.GetRaceByIndex(1, callerId), RaceOrigin,  0,  0,  0,  0,  0,  0,  0,  0,  1, -5,  0,  0,  1, -1,  0,  0, -1,  0, -1,  0,  1, -1,  0,  0,  0,  0,  0,  0,  0,  0, callerId) ; Beast
AddRaceRecord(RaceAPI.GetRaceByIndex(1, callerId), RaceFallen,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  0,  0, -1,  0,  0,  0, callerId) ; Fallen Beast
AddRaceRecord(RaceAPI.GetRaceByIndex(2, callerId), RaceOrigin,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  0,  0,  0,  0,  1,  5,  0,  0,  1,  1,  0,  0,  1, -1,  0,  0, -1,  0,  1,  1, callerId) ; Dark Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(2, callerId), RaceFallen,  1,  1,  0,  0,  0,  0,  0,  0, -1, -1,  0,  0,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  0,  0, callerId) ; Fallen Dark Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(3, callerId), RaceOrigin,  0,  0,  1,  5,  0,  0,  0,  0, -1, -5,  1, -5,  0,  0,  0,  0,  1,  1,  0,  0,  1,  5,  0,  0,  1, -1,  0,  0, -1, -1, callerId) ; Demon
AddRaceRecord(RaceAPI.GetRaceByIndex(4, callerId), RaceFallen,  0,  0,  0,  0,  0,  0,  0,  0,  1, -1,  1, -1,  0,  0,  0,  0,  1,  1,  0,  0,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0, callerId) ; Fallen Demon
AddRaceRecord(RaceAPI.GetRaceByIndex(4, callerId), RaceOrigin,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, callerId) ; Devil
AddRaceRecord(RaceAPI.GetRaceByIndex(4, callerId), RaceFallen,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, callerId) ; Fallen Devil
AddRaceRecord(RaceAPI.GetRaceByIndex(5, callerId), RaceOrigin,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, callerId) ; Human
AddRaceRecord(RaceAPI.GetRaceByIndex(5, callerId), RaceFallen,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, callerId) ; Fallen Human
AddRaceRecord(RaceAPI.GetRaceByIndex(6, callerId), RaceOrigin, -1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1, -1,  0,  0,  0,  1, -1, -1, -1,  0,  0, callerId) ; Light Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(6, callerId), RaceFallen,  0,  0,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, callerId) ; Fallen Light Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(7, callerId), RaceOrigin, -1,  0,  0,  0,  0,  0,  0,  0,  1,  5,  0,  0, -1,  0,  1,  1, -1, -5,  1,  1, -1,  0, -1, -1, -1, -1, -1,  0,  0,  0, callerId) ; Nymph
AddRaceRecord(RaceAPI.GetRaceByIndex(7, callerId), RaceFallen,  0,  0,  0,  0,  0,  0,  0,  0,  1, -5,  0,  0,  0,  0,  0,  0,  1, -5,  0,  0,  1,  5,  1,  5,  1,  5,  0,  0, -1, -5, callerId) ; Fallen Nymph
AddRaceRecord(RaceAPI.GetRaceByIndex(8, callerId), RaceOrigin,  0,  0,  0,  0,  1,  5,  1,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1, -5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, callerId) ; Orc
AddRaceRecord(RaceAPI.GetRaceByIndex(8, callerId), RaceFallen,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, callerId) ; Fallen Orc
AddRaceRecord(RaceAPI.GetRaceByIndex(9, callerId), RaceOrigin,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1, -1,  0,  0,  1,  1,  0,  0,  1,  1,  0,  0,  0,  0,  1, -1,  0,  0,  0,  0, callerId) ; Vampire
AddRaceRecord(RaceAPI.GetRaceByIndex(9, callerId), RaceFallen,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  1,  5,  1,  5,  0,  0,  0,  0, callerId) ; Fallen Vampire

 

 

Sex Attributes

 

Requires: Sex Attributes

Describes racial dispositions for the "orientation" traits from that mod and also the boundaries on other values like Spirit or Self-Esteem. To incorporate racial special properties, sometimes the race stands out if the way it's handles by this extension. A good example would be Nymphs who have a persistent state of sexual arousal or Angels who take no wear damage due to the fact their bodies are always virgin (and hence immediately recover after the act). It's worth mentioning that the extension is integrated based on "good will" - i.e. it listens to the emitted events from the FPA module. If for whatever reason there was no event (bug in the FPA or anything like that) - then FF4 extension will also fail to react on that.

 

Since the integration is event-driven, changing values via console will mean that FF4 will do nothing about that until the moment there will be a proper update from the FPA. This also can lead to some weird situations when you will lose your edits - if you insist on changing values via console, which I do not recommend. Either way - do it on your own risk.

 

Here are the racial records that are added by this extension:

 

Maximum Wear: A maximum value that the race can have for the wear (all three types). Since FPA also has a hidden dependent wear value (the "bottom wear"), it is tracked separately and is propagated into FPA.

 

Maximum Intoxication: Maximum intoxication level. You can't go beyond that limit for your race.

 

Maximum Trauma: Maximum trauma level. You can't go beyond that limit for your race.

 

Maximum Reputation: Maximum reputation level. You can't go beyond that limit for your race.

 

Self-Esteem, Minimum .. Maximum: A range for allowed Self-Esteem values, both minimum and maximum. It will act as a gate on top of a usual FPA's 0..100 range.

 

Spirit, Minimum .. Maximum: A range for allowed Spirit values, both minimum and maximum. It will act as a gate on top of a usual FPA's 0..100 range.

 

Willpower, Minimum .. Maximum: A range for allowed Willpower values, both minimum and maximum. It will act as a gate on top of a usual FPA's 0..100 range.

 

Arousal, Minimum .. Maximum: A range for allowed Arousal values, both minimum and maximum. It will act as a gate on top of a usual FPA's 0..100 range.

 

Orientation, Minimum .. Maximum: A range for allowed Self-Esteem values, both minimum and maximum. It will act as a gate on top of a usual FPA's -50..50 range.

 

Sex Level, Minimum .. Maximum: A range for allowed Sex Level values, both minimum and maximum. It will act as a gate on top of a usual FPA's level range.

 

Addiction: Signifies sexual addiction for the race. If true, then the character of that race will be permanently in the state of sexual addiction (like nymphs, for instance).

 

This functionality is tested and found mostly working though I do not know how other mods that rely on FPA will react. Due to the eventual nature of the updates, FF4 writes FPA values directly. This means that when, for example, the FPA value is changed to conform to the gated range from FF4, that change will not be emitted as an FPA event. Reason for that is - if it will be, then there's no way for FF4 to determine if that event was originated in FF4 or not and it will end up with the endless update loop.

 

Below is the code fragment for all current racial FPA-related rules:

 

Spoiler




;(FF4_Race FF4Race, bool IsFallen, WearAMax, WearOMax, WearVMax, IntoxicationMax, TraumaMax, SexReputationMax, SelfEsteemMin, SelfEsteemMax, \
;SpiritMin, SpiritMax, WillpowerMin, WillpowerMax, ArousalMin, ArousalMax, OrientationMin, OrientationMax, SexLevelMin, SexLevelMax, SexAddiction)
AddRaceRecord(RaceAPI.GetRaceByIndex(0, callerId), RaceOrigin, 0, 0, 0, 0, 0, 0, 80, 100, 80, 100, 80, 100, 0, 100, -50, -40, 0, 100, SexTolerant, callerId)          ; Angel
AddRaceRecord(RaceAPI.GetRaceByIndex(0, callerId), RaceFallen, 50, 50, 50, 0, 0, 100, 80, 100, 50, 100, 80, 100, 0, 50, 25, 50, 0, 100, SexTolerant, callerId)        ; Fallen Angel
AddRaceRecord(RaceAPI.GetRaceByIndex(1, callerId), RaceOrigin, 100, 100, 100, 50, 50, 100, 0, 100, 20, 100, 0, 100, 0, 100, -50, 50, 0, 100, SexTolerant, callerId)   ; Beast
AddRaceRecord(RaceAPI.GetRaceByIndex(1, callerId), RaceFallen, 100, 100, 100, 100, 50, 100, 20, 100, 0, 100, 20, 100, 0, 100, -50, 50, 0, 100, SexTolerant, callerId) ; Fallen Beast
AddRaceRecord(RaceAPI.GetRaceByIndex(2, callerId), RaceOrigin, 20, 100, 100, 100, 50, 50, 80, 100, 0, 100, 20, 100, 20, 100, -50, 0, 0, 100, SexTolerant, callerId)   ; Dark Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(2, callerId), RaceFallen, 20, 80, 80, 80, 100, 100, 80, 100, 20, 80, 20, 100, 0, 100, -50, 25, 0, 100, SexTolerant, callerId)    ; Fallen Dark Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(3, callerId), RaceOrigin, 50, 50, 50, 20, 0, 100, 50, 100, 0, 50, 50, 100, 20, 80, 25, 50, 0, 100, SexTolerant, callerId)        ; Demon
AddRaceRecord(RaceAPI.GetRaceByIndex(3, callerId), RaceFallen, 50, 50, 50, 50, 0, 100, 20, 80, 0, 100, 50, 100, 20, 80, 25, 50, 20, 100, SexTolerant, callerId)       ; Fallen Demon
AddRaceRecord(RaceAPI.GetRaceByIndex(4, callerId), RaceOrigin, 100, 100, 100, 50, 50, 100, 100, 100, 0, 100, 80, 100, 0, 50, 25, 50, 0, 100, SexTolerant, callerId)   ; Devil
AddRaceRecord(RaceAPI.GetRaceByIndex(4, callerId), RaceFallen, 100, 100, 100, 50, 50, 100, 80, 100, 20, 100, 80, 100, 0, 100, 25, 50, 0, 80, SexTolerant, callerId)   ; Fallen Devil
AddRaceRecord(RaceAPI.GetRaceByIndex(5, callerId), RaceOrigin, 100, 100, 100, 100, 100, 100, 0, 100, 0, 100, 0, 100, 0, 100, -50, 50, 0, 100, SexTolerant, callerId)  ; Human
AddRaceRecord(RaceAPI.GetRaceByIndex(5, callerId), RaceFallen, 100, 100, 100, 100, 100, 100, 0, 100, 0, 100, 0, 100, 0, 100, -50, 50, 0, 100, SexTolerant, callerId)  ; Fallen Human (just a fallback)
AddRaceRecord(RaceAPI.GetRaceByIndex(6, callerId), RaceOrigin, 100, 20, 100, 100, 100, 50, 20, 100, 20, 80, 20, 100, 0, 100, -50, 25, 20, 100, SexTolerant, callerId) ; Light Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(6, callerId), RaceFallen, 100, 20, 100, 100, 100, 50, 20, 100, 20, 80, 20, 100, 0, 100, -50, 50, 50, 100, SexAddicted, callerId) ; Fallen Light Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(7, callerId), RaceOrigin, 50, 50, 20, 20, 50, 0, 0, 100, 50, 100, 0, 100, 80, 100, -50, -40, 80, 100, SexAddicted, callerId)     ; Nymph
AddRaceRecord(RaceAPI.GetRaceByIndex(7, callerId), RaceFallen, 50, 50, 20, 20, 50, 0, 0, 100, 0, 100, 0, 100, 80, 100, 0, 50, 0, 100, SexTolerant, callerId)          ; Fallen Nymph
AddRaceRecord(RaceAPI.GetRaceByIndex(8, callerId), RaceOrigin, 100, 100, 100, 20, 50, 100, 50, 100, 20, 100, 0, 100, 0, 100, 0, 50, 0, 100, SexTolerant, callerId)    ; Orc
AddRaceRecord(RaceAPI.GetRaceByIndex(8, callerId), RaceFallen, 80, 80, 80, 50, 50, 100, 50, 100, 20, 100, 0, 100, 0, 100, -25, 50, 0, 100, SexTolerant, callerId)     ; Fallen Orc
AddRaceRecord(RaceAPI.GetRaceByIndex(9, callerId), RaceOrigin, 50, 50, 50, 50, 100, 20, 20, 80, 20, 80, 20, 80, 20, 80, -25, 25, 0, 100, SexTolerant, callerId)       ; Vampire
AddRaceRecord(RaceAPI.GetRaceByIndex(9, callerId), RaceFallen, 50, 50, 50, 50, 100, 20, 0, 100, 0, 100, 0, 100, 0, 100, -50, 50, 0, 100, SexTolerant, callerId)       ; Fallen Vampire

 

 

Family Planning

 

Requires: Family Planning

There's a basic functionality for the pregnancy as well. The idea here is that different races have different fertility/virility and some are just too different from humans and thus it's harder for them to get pregnant / impregnate a human (as FF4 currently works only for PC, all other actors in the scene will be human). Or - some races cannot get pregnant altogether, in-lore reasons - example would be Angels again: since their bodies are always virgin, there's absolutely no way they can get pregnant.

 

There are only a few racial properties added by this extension:

 

  • Impregnation Chance: How likely it is for PC to be impregnated, female PC only
  • Impregnating Chance: How likely is it that PC will impregnate the partner, male PC only.

 

The meaning is exactly as it reads. Similar to FPA, FF4 integrates with FPFP based on eventual updates meaning that checks will happen after the act. If it so happened that impregnation occurred during the scene, FF4 will then roll the chance check according to PC's gender, and if the roll showed that the impregnation failed - then FF4 will call the abortion API method from FPFP.

 

This means that technically there's a moment in time between the event arrival and handling the abortion call when PC will be counted as "pregnant" even if racial records prevented them from being so. This time is short, less than a second usually - but it will mean that you will se the impregnation message from FPFP and then abortion message from FF4. There's no way to fix it unless FPFP's authors will create an integration with FF4 in some way and do checks on their end.

 

Here's the racial rules set for this FF4 extension:

 

Spoiler



AddRaceRecord(RaceAPI.GetRaceByIndex(0, callerId), false, 100, 0, callerId)   ; Angel
AddRaceRecord(RaceAPI.GetRaceByIndex(0, callerId), true, 100, 100, callerId)  ; Fallen Angel
AddRaceRecord(RaceAPI.GetRaceByIndex(1, callerId), false, 100, 100, callerId) ; Beast
AddRaceRecord(RaceAPI.GetRaceByIndex(1, callerId), true, 100, 100, callerId)  ; Fallen Beast
AddRaceRecord(RaceAPI.GetRaceByIndex(2, callerId), false, 50, 10, callerId)   ; Dark Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(2, callerId), true, 100, 50, callerId)   ; Fallen Dark Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(3, callerId), false, 100, 100, callerId) ; Demon
AddRaceRecord(RaceAPI.GetRaceByIndex(4, callerId), true, 100, 100, callerId)  ; Fallen Demon
AddRaceRecord(RaceAPI.GetRaceByIndex(4, callerId), false, 100, 100, callerId) ; Devil
AddRaceRecord(RaceAPI.GetRaceByIndex(4, callerId), true, 100, 100, callerId)  ; Fallen Devil
AddRaceRecord(RaceAPI.GetRaceByIndex(5, callerId), false, 100, 100, callerId) ; Human
AddRaceRecord(RaceAPI.GetRaceByIndex(5, callerId), true, 100, 100, callerId)  ; Fallen Human
AddRaceRecord(RaceAPI.GetRaceByIndex(6, callerId), false, 10, 10, callerId)   ; Light Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(6, callerId), true, 100, 100, callerId)  ; Fallen Light Elf
AddRaceRecord(RaceAPI.GetRaceByIndex(7, callerId), false, 100, 1, callerId)   ; Nymph
AddRaceRecord(RaceAPI.GetRaceByIndex(7, callerId), true, 100, 10, callerId)   ; Fallen Nymph
AddRaceRecord(RaceAPI.GetRaceByIndex(8, callerId), false, 100, 100, callerId) ; Orc
AddRaceRecord(RaceAPI.GetRaceByIndex(8, callerId), true, 100, 100, callerId)  ; Fallen Orc
AddRaceRecord(RaceAPI.GetRaceByIndex(9, callerId), false, 25, 25, callerId)   ; Vampire
AddRaceRecord(RaceAPI.GetRaceByIndex(9, callerId), true, 10, 10, callerId)    ; Fallen Vampire

 

 

 

And as mentioned earlier, all the extensions will merge the racial rules based on the bloodlines. So for instance, in FPFP extension the pregnancy chances will dwindle if the bloodline races contain those races which have low chances for that.

Posted

TROUBLESHOOTING

 

As mentioned many times, bugs and glitches are bound to happen, it was impossible for me to vet for all the possible problems nor test all the combinations of races / classes and whatnot. Still, I bothered to add some tools to locate the problem - which I won't be expecting of you, however providing the information back when reporting a bug will increase chances that I understand what went wrong.

 

Debug Log

FF4 has it's own debug log, written as FalloutFantasy0.log (there are several numbers on rotation, actually, but the interesting one would almost certainly be the newest one, denoted with a 0). In the log there's usually a very detailed entry set of whatever is happening in the mod. It means that your log will be very large, especially after hours of gameplay without stopping. As such, I would not want you to provide the full log - that would be a waste of space and I don't need it anyways. Instead, you can try locating the relevant piece of the log depending on the issue you experience.

 

For example, if you think the issue is with the races not functioning correctly, you can try to search the log for FF4_RaceManager entries. All the lines follow the format like this:

 

Spoiler


[05/01/2021 - 09:37:56PM] Fallout Fantasy / info / FF4:OnTimer:2047179 / FF4_SpellManager / OnTickSpell / --> Tick ..

 

 

I.e. you have a block of information, separated by a slash in the following order:

  • Timestamp + mod name, always the same
  • Log line level: info, warning or error (there is also "critical" level but at that point the mod should not allow to continue)
  • Caller ID - the unique identifier that's passed through the entire call stack back to the origin of the request
  • Script name - the script name which has written the log line
  • Method name - the method name in the script that has written the log line
  • Data - the data itself, i.e. what was written

 

So, when you've found the related log entry, check that it:

  • Contains the script name that is at least somewhat makes sense for the error check. Example: it would be pointless to check Profile API if you see the problem with the player controls
  • Timestamp is somewhere around the issue. Best way - you pause the game the moment you encounter the problem, switch to the log and see what's in there in the last lines

 

And after that, when you think you found the relevant log line, you need to see what caller id it has (it's the third value in the line, looking like "FF4:OnTimer:2047179" - some colon-separated stuff with a long number at the end) and then search the log for all the lines with this value. Many text editors will allow you to do so automatically.

 

Yes, I know it's a lot to ask - but that will drastically increase my chances of identifying the problem. Digging through the entire log is impossible both in resources and time for me. Especially if there will be a lot of them.

 

Debug In-Game

There's also a way for you to check certain values in-game. This is for developer access mainly, but I figured some of the values can be useful to see directly in debug mode and not everything is written in the log. Besides, the log will never show internal state of objects and data structures in the mod. This portion assumes you have:

 

  • Console that's enabled (in survival mode it isn't by default, though there are ways to enable it)
  • Basic understanding on how to use commands in console

 

Here's the list of console commands you can use to check the state of certain values in the mod, technically there are more than this but I omit commands that will have no use to the non-developers of the mod:

 

cgf FF4:Globals:FF4_Debug.DebugShowSexualityRules

Will show the JSON for the sexuality rules in-game. Each plugin, if enabled, will report its internal data store. Useful for checking how things were merged in case PC has several bloodlines

 

cgf FF4:Globals:FF4_Debug.DebugShowAutoEquip

Will show the items that are registered for auto-equip. These items will be forced to be equipped on the character at all times and will be re-equipped even if other mods will try to unequip them (this does not work on AAF since that is using technically a doppelganger in the scene, a different NPC from the player and hence autoequip does not apply)

 

cgf FF4:Globals:FF4_Debug.DebugShowClassLevels

Will show current classes and their levels for the player. Useful to check if the internal structure corresponds to whatever is shown in the profile page for the classes.

 

cgf FF4:Globals:FF4_Debug.DebugShowKnownSpells

Will show all the FF4 spells that are known to the PC. Usually good to do if you think some of your spells are missing in the aid menu. The mod normally tries to restore the spell item if you lost it for some reason, but it might be the case that I forgot one or more cases when that can happen.

 

cgf FF4:Globals:FF4_Debug.DebugShowKnownFeats

Will show all the FF4 feats that are known to the PC. Similar to spells - do this if you feel some feats are missing. Usually it's not the case because feats aren't meant to be used actively.

 

cgf FF4:Globals:FF4_Debug.DebugShowKnownProficiency

Will show known proficiency. Very useful in case you think you must be able to equip certain stuff and the mod doesn't let you. Proficiency in-game is designed as a multi-layered system with some racial feats including some other feats for instance. This is a good way to see which keywords are actually allowed as a result of all that.

 

cgf FF4:Globals:FF4_Debug.DebugShowRaceVisuals

Will show registered racial visuals. Especially good if you used the "custom" option for the racial visual items definition. That functionality is in early stage and wasn't tested extensively, so this command might help you to see if what you customized reflects the reality.

 

cgf FF4:Globals:FF4_Debug.DebugShowAllRaces

Will show all races in-game. A generic check to see if the initialization for racial entries was completed successfully.

 

cgf FF4:Globals:FF4_Debug.DebugShowAllClasses

Will show all races in-game. A generic check to see if the initialization for class entries was completed successfully.

Posted
51 minutes ago, toivo said:

I um unable to crouch/sneak after starting a new game with this mod.

 

Intended. Sneak (crouch) is reserved for Rogue class and it's derivatives. Sorry, but no sneak attacks for mages.

 

P.S. I realize there will be a lot of questions about things in the mod (even if it works by design) simply because it's not documented anywhere. And yes, that's why the status is pre-alpha. So please feel free to ask/complain/critique in the comments :)

Posted

This mod looks fantastic haha, I would like to try it but first I will finish playing the game that is almost finished and later I will install this mod, I hope you continue to put more information and photos of course

Posted

i really dont understand what this does, does this this mod just adds some random fantasy races to choose from in the game? so yeah i'll complain, you should really practice your ability to create a summary, everything can be summarized into a single paragraph

Posted

Mod looks great so far, but in my experience keep a text document open on the side to record your changes as you make them it takes little effort and helps everybody including yourself; ill be watching with great interest as the fantasy and rpg elements of fallout 4 are what makes it inferior to the other fallout games, next to the offensive game design of pandering to the lowest common denominator but that's a separate issue

Posted
3 hours ago, 2Dimm said:

i really dont understand what this does, does this this mod just adds some random fantasy races to choose from in the game? so yeah i'll complain, you should really practice your ability to create a summary, everything can be summarized into a single paragraph

 

I guess I should. I tried to include at least something in the main post but to my defense - it IS indeed a lot of stuff. It adds races - yes, but that's only one of the aspects. It adds some RP elements, a classes system and a lot more. I will expand the first posts with more information.

 

For now - think of it as "what would happen if Fallout4 had a fantasy-like character builder and RP elements". Or at least some version of that idea.

Posted

I just wanted to say good job. It must take a lot of patience and passion to make a mod of this scale. 

 

BTW if you need help I can join you/your team. But keep in mind I'm a complete noob with FO4Edit but I'm willing to learn

Posted
13 hours ago, puttputt said:

BTW if you need help I can join you/your team. But keep in mind I'm a complete noob with FO4Edit but I'm willing to learn

 

Hey, thanks. Here's what I need skills-wise:

 

  • Are you good with Papyrus scripting?
    • Yes? Welcome to the Spells & Feats crew!
    • No? Let's try something else
  • Are you good with animations and can create them / guide me through a lot of "how"-s?
    • Yes? Good sir, welcome, welcome! You might as well earn some good $$$ here!
    • No? Let's try something else
  • Perhaps you know ActionScript and can help me creating the UI widgets and explain how to integrate them with my mod?
    • Yes? Good sir, welcome, welcome! UI crew wants you in! You might as well earn some good $$$ here!
    • No? Let's try something else
  • Maybe you know Creation Kit then? Did some quests and dialogues before?
    • Yes? Welcome to the Quests & Dialogues crew! This is a new team with no members yet
    • No? Well, I think we don't have an opening yet. But don't worry - our scenario & plot crew is likely to be formed soon and you can try your luck there!

 

Of course the "team" label is just for fun, there is no organization here, I did everything so far on my own.

Posted

So far all I've seen is Fallout Fantasy in the Menu. no classes no races nothing. Do i have to progress further into the game before something happens?

Posted
4 hours ago, Chad24 said:

So far all I've seen is Fallout Fantasy in the Menu. no classes no races nothing. Do i have to progress further into the game before something happens?

 

There is a "Fallout Fantasy Controller" added in the "aid" menu (it's a chem), using it will allow you to set up your character. If it's not there then something went wrong, it's added when the mod reports successful init completion.

Posted

The game removes any items from the players inventory at some point in the intro, so if the item is added before then (I think based on the sounds it's while you're stuck in the cryopod), it has a chance of getting removed. Also, the inability to use any weapons in the mod intro is a bit tedious, but makes sense given the mod state. It also proves that the current features work as intended!

Also, tried loading the mod up in the CK, and it just full on crashes, likely because of some record errors (When checking for errors xEdit mentions something about FFFFFF entries and unloadable records, tho I'm sure these would likely be adjusted for as the mod progresses). 

SKK article on including a "onlocationchange()" backup to ensure your items are added https://www.nexusmods.com/fallout4/articles/1038

*I'm not really a papyrus person, so all of this is a mildly educated guess

Posted
4 hours ago, Operand said:

 

There is a "Fallout Fantasy Controller" added in the "aid" menu (it's a chem), using it will allow you to set up your character. If it's not there then something went wrong, it's added when the mod reports successful init completion.

Thanks I'll try to use it with a no mods profile, I may have to many other mods running 

Posted
2 hours ago, candied_skull said:

The game removes any items from the players inventory at some point in the intro, so if the item is added before then (I think based on the sounds it's while you're stuck in the cryopod), it has a chance of getting removed. Also, the inability to use any weapons in the mod intro is a bit tedious, but makes sense given the mod state. It also proves that the current features work as intended!

 

To correct: it will not remove items, it will unequip them. And yes - this is an intended behavior. Anything of type armor / weapon generally requires proficiency and if the character can't use the thing - well, they can't. Example - using the pistol is not as easy as one might think. Apart from the obvious aiming thing, you need to know the safe switch (if it's there) and how to flip it, then how to reload etc etc. Not even beginning to mention the gun maintenance.

 

2 hours ago, candied_skull said:

Also, tried loading the mod up in the CK, and it just full on crashes, likely because of some record errors (When checking for errors xEdit mentions something about FFFFFF entries and unloadable records, tho I'm sure these would likely be adjusted for as the mod progresses). 

 

I actually never tried doing anything with this mod in CK. Because I never used CK in my life - apart from one attempt which ruined days of my prior work and I decided to steer clear of CK. However if this mod is to progress further - yes, I think CK is necessary - for cells, quests and dialogues. When that time comes, I will try to make it editable in CK.

 

Edit: Checked in FO4Edit. Yey, only 6 errors and all are very minor. Impressive, if I do say so myself - especially that I never checked it before and just cleaned things up as they came and went.

 

Recommendation for the start would be mods like Start Me Up. First - because it allows to skip the intro sequence. Second - RP-wise. Like - come on, if PC is a say demon, how could he/she possible have a family lore-wise? Or if she is an angel - how she could ever bear a child?

Posted
19 minutes ago, Operand said:

To correct: it will not remove items, it will unequip them. And yes - this is an intended behavior. Anything of type armor / weapon generally requires proficiency and if the character can't use the thing - well, they can't.

I'm not referring to this mod's block weapon feature. I'm referring to a vanilla game "feature" that may be what prevents or removes the fantasy aid controller item. It is a common issue that many mods that add a holotape/aid item/etc without a check to see if you are in the commonwealth, or add a check for changelocation can end up with the item missing from the player menu on a new game. 
I tested your mod without any other mods and did not have your mod's aid item in my inventory, and heard the add item sound while in the intro and the remove item sounds mid-cryo pod sequence

Edit: I was indeed able to add it in via console, of course

Posted
17 minutes ago, candied_skull said:

I'm not referring to this mod's block weapon feature. I'm referring to a vanilla game "feature" that may be what prevents or removes the fantasy aid controller item. It is a common issue that many mods that add a holotape/aid item/etc without a check to see if you are in the commonwealth, or add a check for changelocation can end up with the item missing from the player menu on a new game. 
I tested your mod without any other mods and did not have your mod's aid item in my inventory, and heard the add item sound while in the intro and the remove item sounds mid-cryo pod sequence

 

There's a mod that fixes that: https://www.nexusmods.com/fallout4/mods/51781

 

Haven't had any problems with it yet, but I've also only started once or twice since adding, and haven't gotten very far before starting over each time.

Posted
1 hour ago, candied_skull said:

I tested your mod without any other mods and did not have your mod's aid item in my inventory, and heard the add item sound while in the intro and the remove item sounds mid-cryo pod sequence

Edit: I was indeed able to add it in via console, of course

 

Got it. Well, this is just a bug in my mod. I know there are issues with vanilla engine here but the aim should be to make it work under any circumstances. An easy fix here would be to not start the FF4 Kernel handler until MQ102 is done (like any other well-respected mod behaves). So yeah. I'm not sure how to do it exactly, but I guess that will be necessary.

 

For now - again - starting the game with some alternate start mod seems to be the best option.

Posted
3 hours ago, candied_skull said:

The game removes any items from the players inventory at some point in the intro, so if the item is added before then (I think based on the sounds it's while you're stuck in the cryopod), it has a chance of getting removed. Also, the inability to use any weapons in the mod intro is a bit tedious, but makes sense given the mod state. It also proves that the current features work as intended!

Also, tried loading the mod up in the CK, and it just full on crashes, likely because of some record errors (When checking for errors xEdit mentions something about FFFFFF entries and unloadable records, tho I'm sure these would likely be adjusted for as the mod progresses). 

SKK article on including a "onlocationchange()" backup to ensure your items are added https://www.nexusmods.com/fallout4/articles/1038

*I'm not really a papyrus person, so all of this is a mildly educated guess

7 hours ago, Operand said:

 

There is a "Fallout Fantasy Controller" added in the "aid" menu (it's a chem), using it will allow you to set up your character. If it's not there then something went wrong, it's added when the mod reports successful init completion.

 

 

Sorry i cant remove the quotes

I saw the pop up window about not doing anything until the mod was at 100% so I didnt do anything until it was finished loading while still in the bathroom. 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...