e-mods.net

Nod Engine SDK => Scripting and Modifying => Topic started by: Populism on 2011-08-05, 02:35:42

Title: A few questions about modding
Post by: Populism on 2011-08-05, 02:35:42
Hello all, I'm new here and have a few questions. I use AoR 2011 (great mod) and am tweaking it just for me. I've only made it up to the Society of Leopold before I decided to try modding the game. If it wasn't for the AoR mod I would have stopped playing during the the first quest, so any modifications I make will be on top of that mod.

1. Is there a way to alter the xp costs per lvl on disciplines?
2. Can durations for summons/raised/tranced be made permanent?
3. I remember seeing a file that controlled clan vs non clan disc costs,  
    any idea which file this is?
4. Is Sorvena a multi player only store?
5. If I add disciplines to enemy AI files will they use them?
6. How can you add treasure class tag to templates? I'd like to add them
    back into AoR with a chance to drop the current weapon.


EDIT: Learned a bit more...figured I'd share.

I've found a way to influence xp costs...not exactly what I wanted but better then nothing. The starting cost located in  game.ndd will affect every level after it

You can use a value of 0 in the discipline file to allow permanent
summons/stats and what not...but is there a way to have the effect cancelled when a new map loads? I noticed they used this type of effect in Wodal.

EDIT PT  Two: I'm basically done modding and started playing the game again, though I am still trying new things as I go.  I managed to make a few changes that I really like so far. Heres where I am now.

. Christof has new starting armor to help him survive.

. In an effort to make the coterie/disciplines more important all discipline scrolls have  been removed from shops. They still drop as random loot, and are worth much more.
   
. Altered discipline; bp, exp cost, duration and delay to be much more potent at early levels.

. Buying into disciplines outside your clan is more costly.

. Removed the weapon drops from enemies as this just made the player far to rich and took away the fun of actually having to save up or find the gear they needed.

. Increased values on lower end random cash drops.

. More info has been added to the in game descriptions of each discipline.

. Most bosses have had thier health doubled and have a minimum of 200 blood points, I did not increase the End Game boss stats.


Side Note to the care takers of this sight: Posting here after you've passed up the initial amount of text that the message box can hold (once you need to scroll) is very hard to do because it jitters up and down as you type...I'm dizzy.
Title: Re: A few questions about modding
Post by: Populism on 2011-08-24, 01:05:32
Is it me or are the summons unbalanced?

Brujah and Tremere get pets with stats in the 40's and 50's while nosferatu get rats that have stats in the single digits.
Title: Re: A few questions about modding
Post by: Phantom of the Vamp on 2011-09-07, 19:57:53
Neat, thanks for sharing.   :)
Title: Re: A few questions about modding
Post by: Populism on 2011-09-11, 23:52:20
Coolish, I've been tinkering with tons of stuff and have learned a good bit and would be happy to share anything I've learned, any questions just ask...its fun to mod :)

Edit: Forgot to mention I'm familiar with string (wording), nbs (store), class (mainly disciplines), game (discipline), effect (discipline and item), NPC (characters) and AI file types. Also all the templates used by the NOT editor.

I don't play with maps, graphics or scripting so can't help there.

PM'd Jarvokis asking him if I could release this alternate version of his mod. I think people would like it.
Title: Re: A few questions about modding
Post by: Javokis on 2011-09-26, 15:34:05
Actually as a public notice: I always say yes these days.
Title: Re: A few questions about modding
Post by: Populism on 2011-10-10, 22:03:12
Thanks Jarvokis I really do appreciate that...unfortunately my hard drive crashed about 3 weeks ago and I lost all that work. Sad thing is, I was nearly done. I learned a ton of stuff from your tutorials and comments on the forums here, you explain things well.
Title: Re: A few questions about modding
Post by: edders on 2012-07-06, 09:02:41
Hi, quick question relevent to this topic (didn't want a start a whole new thread) - how did the OP set the duration of summons? I'm browsing game.ndd and effects.ned, but can't find exactly where you edit the length to which summons last (not the casting time).

edit: doh, found it in discipline.class

was hoping to do it without java :D
Title: Re: A few questions about modding
Post by: Javokis on 2012-07-08, 08:13:31
Do not edit the Discipline.class file! Instead create a script which extends on it, then override its variables. If you edit the Discipline.class file, there's a huge chance of causing "double cast" errors. Something in the engine requires there to be only one Discipline.class file functioning in the game with no Codex.nob override. But you can still override its values like so:

Code: [Select]
public class AoRDiscipline extends Discipline
{
// DISCIPLINE DURATIONS
protected static final int[] AWE_DURATIONS = {  5000,   10000,  15000,  20000, 25000 };
protected static final int[] ATROPHY_DURATIONS = {  10000,  20000,  30000,  40000,  50000 };
protected static final int[] BECKONING_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] BLOODHEALING_DURATIONS = {   4000,   8000,   8000,  16000,  16000 };
protected static final int[] BLOODDEXTERITY_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] BLOODSTRENGTH_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] BLOODSTAMINA_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] BLOODOFPOTENCY_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] CELERITY_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] CLOAKOFSHADOWS_DURATIONS = {  30000,  60000,  90000, 120000, 150000 };
protected static final int[] CLOAKTHEGATHERING_DURATIONS = {  30000,  60000,  90000, 120000, 150000 };
protected static final int[] COMMAND_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] DARKHUNTER_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] DREADGAZE_DURATIONS = {   5000,  10000,  15000,  20000,  25000 };
protected static final int[] ENTRANCEMENT_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] EYESOFTHESERPENT_DURATIONS = {   5000,  10000,  15000,  20000,  20000 };
protected static final int[] EYESOFTHEBEAST_DURATIONS = {  30000,  60000,  90000, 120000, 150000 };
protected static final int[] EARTHMELD_DURATIONS = {  30000,  60000,  90000, 120000, 150000 };
protected static final int[] FERALWHISPERS_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] FERALCLAWS_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] FLAMETRAIL_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] FORTITUDE_DURATIONS = {  30000,  60000,  90000, 120000, 180000 };
protected static final int[] HATCHTHEVIPER_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] HEARTOFSTONE_DURATIONS = {  30000,  60000,  90000, 120000, 150000 };
protected static final int[] HSENSES_DURATIONS = {  30000,  60000,  90000, 120000, 150000 };
protected static final int[] IGNOREFLAME_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] INVISIBILITY_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] MAJESTY_DURATIONS = {  10000,  20000,  30000,  40000,  60000 };
protected static final int[] MASK1000FACES_DURATIONS = {  15000,  30000,  45000,  60000,  75000 };
protected static final int[] MESMERIZE_DURATIONS = {   5000,  10000,  15000,  20000,  25000 };
protected static final int[] MISTFORM_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] OBFUSCATE_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] POSSESSION_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] POTENCE_DURATIONS = {  30000,  60000,  90000, 120000, 180000 };
protected static final int[] PRISONOFICE_DURATIONS = {   2000,   4000,   6000,  8000,  10000 };
protected static final int[] PSYCHICPROJECTION_DURATIONS = {  10000,  15000,  20000,  25000,  30000 };
protected static final int[] QUELLTHEBEAST_DURATIONS = {   5000,  7000,   9000,   11000,  13000 };
protected static final int[] SHAMBLINGHORDES_DURATIONS = {  30000,  60000,  90000,  120000,  180000 };
protected static final int[] SHAPEOFTHEBEAST_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] SKINOFTHEADDER_DURATIONS = {  30000,  60000,  90000, 120000, 180000 };
protected static final int[] SUBSUMETHESPIRIT_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] SUMMONELEMENTAL_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] SUMMONSOUL_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] THEFORGETFULMIND_DURATIONS = {   2500,   5000,   7500,  10000,  12500 };
protected static final int[] THEHAUNTING_DURATIONS = {   5000,  10000,  15000,  20000,  25000 };
protected static final int[] TORCH_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] TRUEFAITH_DURATIONS = {   2500,   5000,   7500,  10000,  12500 }; // (*)
protected static final int[] TRUESIGHT_DURATIONS = {  30000,  60000,  90000, 120000, 150000 };
protected static final int[] VIGORMORTIS_DURATIONS = {  15000,  30000,  45000,  60000,  90000 };
protected static final int[] VOICEOFMADNESS_DURATIONS = {  10000,  20000,  30000,  40000,  50000 };

// (*) do not change this duration without also changing the timers in exp_truefaith[n] templates, and truefaith[n].nex explosion files

// OTHER DISCIPLINE CONSTANTS
protected static final float[] AWAKEN_HEALTHS = { 0.20f, 0.40f, 0.60f, 0.80f, 1.00f };
protected static final float[] AWAKEN_BLOODS = { 0.15f, 0.30f, 0.45f, 0.60f, 0.75f };

protected static final float[] SHAMBLINGHORDES_BLOODS = { 0.10f, 0.20f, 0.30f, 0.40f, 0.50f };
protected static final float[] SHAMBLINGHORDES_HEALTHS = { 0.30f, 0.40f, 0.50f, 0.60f, 0.70f };

protected static final float[] VIGORMORTIS_BLOODS = { 0.10f, 0.20f, 0.30f, 0.40f, 0.50f };
protected static final float[] VIGORMORTIS_HEALTHS = { 0.10f, 0.20f, 0.30f, 0.40f, 0.50f };

protected static final float CLOAKOFSHADOWS_ALPHA_NONE = 1.0f;
protected static final float[] CLOAKOFSHADOWS_ALPHAS = { 0.25f, 0.20f, 0.15f, 0.10f, 0.05f };

protected static final float CLOAKTHEGATHERING_ALPHA_NONE = 1.0f;
protected static final float[] CLOAKTHEGATHERING_ALPHAS = { 0.25f, 0.20f, 0.15f, 0.10f, 0.05f };

protected static final String[] FERALCLAWS_TEMPLATES = { "Claw01", "Claw02", "Claw03", "Claw04", "Claw05" };
protected static final String[] FLASH_TEMPLATES = { "exp_flash1", "exp_flash2", "exp_flash3", "exp_flash4", "exp_flash5" };

protected static final String[] FIRESTORM_TEMPLATES = { "exp_firestorm1", "exp_firestorm2", "exp_firestorm3", "exp_firestorm4", "exp_firestorm5" };
protected static final String[] FLAMERING_TEMPLATES = { "exp_flamering1", "exp_flamering2", "exp_flamering3", "exp_flamering4", "exp_flamering5" };

protected static final int[] FIREBALL_DAMAGES = { 30, 40, 50, 60, 70 };

protected static final float INVISIBILITY_ALPHA_NONE = 1.0f;
protected static final float[] INVISIBILITY_ALPHAS = { 0.25f, 0.20f, 0.15f, 0.10f, 0.05f };

protected static final float MISTFORM_ALPHA_NONE = 1.0f;
protected static final float[] MISTFORM_ALPHAS = { 0.25f, 0.20f, 0.15f, 0.10f, 0.05f };

protected static final float OBFUSCATE_ALPHA_NONE = 1.0f;
protected static final float[] OBFUSCATE_ALPHAS = { 0.25f, 0.20f, 0.15f, 0.10f, 0.05f };

protected static final String[] PLAGUEWIND_TEMPLATES = { "proj_plaguewind0", "proj_plaguewind1", "proj_plaguewind2", "proj_plaguewind3", "proj_plaguewind4" };

protected static final String[] TRUEFAITH_TEMPLATES = { "exp_truefaith", "exp_truefaith1", "exp_truefaith2", "exp_truefaith3", "exp_truefaith4" };

protected static final String[] EYESOFTHEBEAST_TEMPLATES = { "exp_eyesofthebeast", "exp_eyesofthebeast1", "exp_eyesofthebeast2", "exp_eyesofthebeast3", "exp_eyesofthebeast4" };

//AoR override... bosses don't fizzle... they chizzle.
public boolean Fizzled(int level)
{
// never fizzle a scroll cast... or a boss cast
if((casterThing.GetActorFlags2() & THING_AF2_SCROLLCAST) != 0 || AoRConstants.IsAoRBoss(casterThing))
return(false);

if(Math.random() < ( (float)(5 - level) / 100.0f))
return(true);

return(false);
}



This is copy pasta from the new AoR 2012 discipline script override. notice that it extends Discipline? This wont cause a double cast error. It's perfectly okay to make another script without double cast errors.