Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - Dhund

#1
Suggestions / Furniture Manipulation Player Tool
October 23, 2023, 09:45:51 PM
I would like to suggest a new player tool be added, for fine tuning the placement and use of player furniture.

On clicking a location, the player tool searches the placeables in a radius, finding the closest player furniture to the click, that is also owned by the PC, and saving that object.

On clicking themselves, open a conversation with the following options, assuming the PC is within range of the object. (Primarily to prevent exploiting it by being able to adjust from other areas, somehow)

  • Adjust Location
    • Move North - Adjust Y value by +0.1
    • Move East - Adjust X value by +0.1
    • Move South - Adjust Y value by -0.1
    • Move West - Adjust X value by -0.1
    • Nudge North - Adjust Y value by +0.01
    • Nudge East - Adjust X value by +0.01
    • Nudge South - Adjust Y value by -0.01
    • Nudge West - Adjust X value by -0.01
  • Adjust Rotation
    • + 1 degree - Adjust rotation by +1
    • + 10 degrees - Adjust rotation by +10
    • - 1 degree - Adjust rotation by -1
    • - 10 degrees - Adjust rotation by -10
  • Adjust Scale
    • + 1% - Adjust scale by +1% (Within a pre-set range, such as 10% or 25%)
    • - 1% - Adjust rotation by -1%
  • Toggle Static

This gives us the options to finely adjust the placement and appearance of furniture that is much more difficult, at the moment. Being able to place an object, see where it actually appears versus the intent, and then able to shift it into place would be very helpful.

Scale would let us add some more flavor to the system, a bed for an Ashfolk would look different from one scaled to suit a Stonefolk.

Lastly, being able to toggle an item to and from static mode. This would let us place a non-interactable piece of furniture such as a table, or with this, carpets, and be able to toggle them static to avoid them being a glowing clickable, until it is time to pick them up again. Improving performance by making them static is another benefit.

Another option is being able to claim objects, with the intent it is to be used on furniture in public areas, or private rented ones, with each use being clearly logged for abuse, to avoid the bothering of DMs for this, with the same rules as PvP oversight. This would require the initial 'selection' script to simply find the nearest player furniture, and ignore ownership.
#2
Suggestions / Consecrating Relics
September 11, 2022, 12:06:41 AM
Relics and Clerics are in a bit of a bad place, currently. For the most part, in order to use most of your class features, you need to rely on RNG for an appropriate item. This is disregarding the need for DM loot for higher level spells.

But, I come with a solution!

We have several crafting systems that would work ideally for this! Specifically, I'll talk in regards to Alchemy and Tinkering comparisons.



Consecration

(Modifier = EFUSS Consecration Points + Wisdom + Cleric Level)

Performed at Sanctified Altars (Similar to other crafting benches, spawned in/available at temples/worship sites?),  consecration mixes ingredients to create relics, and other various items of faith.

As with Tinkering, once you invest a point, you can use the crafting menu once a day to create a Consecrated ingredient. Unlike tinkering, this is chosen at random from your two domains, and max cleric spell level available.

Themes would be for Domains (in comparison to Elemental ingredients in Alchemy).
Tiers would be determined by pieces of Divinity (determining max spell level of the relic/result). (Dull Shard of Divinity (tier 0), Glinting Shard of Divinity (tier 1), Suffused Shard of Divinity (tier 2), Lustrous Shard of Divinity (max 3), Brilliant Shard of Divinity (tier 4))

For example:

Combining a Blessed Stone (Earth Domain theme), a Brilliant shard of Divinity (tier/circle 4 ingredient), and three other random ingredients would, if the recipe has a result, and the DC is met, create one of the existing Earth Domain Relics with a max casting circle of 4 (or equivalent in power, as determined at time of the crafting tables)

Instead of Relic Guardians being able to eat Relics, it breaks it down into one ingredient, randomly choosing from any domains tagged on it, and up to the max level of spells. So a Water/Law, max 3rd circle relic could give you a water theme, law theme, or tier 0, 1, 2 or 3 ingredient

With a system like this, the most random part of being a cleric, hoping for an appropriate domained relic with decent power to drop would be something that can be mitigated/worked around. Merchants would find people actually wanting to buy most relics, even if they just break them down for parts.
#3
The Lady-In-Waiting has waited enough; Those whom are faithful will find it requited.

Clerics of the Small Gods, Relic Guardians, Preachers, by whatever name, aren't uncommon to find.  Their job is to represent the faith, aid the faithful, and convert new believers; but I find that for as important as faith should be, there's never been a big push to actually convert people ingame. Maybe I've missed it, maybe its just rare.

What I propose is a few small changes, to reward being of the same faith as a cleric you travel with, and maybe/hopefully getting some uncommon spell selections made more of a tempting choice. While the specifics will vary, the general thrust of the idea is that being of the same faith brings bonus effects, and more of the faithful brings boons.

Faithful in this regard will refer specifically to someone with a Deity tag that matches the casting cleric. This should usually include said cleric as well. These only apply when CAST, not when used from items or abilities.

Zoo Buffs
When cast on a faithful, take the best of 2 rolls as if you had Spell Focus Transmutation. If you have Spell Focus Transmutation, take the best of 3, as if you had Greater Spell Focus.

Bless
All faithful allies in the area of effect also gain 1d2 Temp HP per faithful affected. (1d2 instead of a flat 1 hp, so you can't just cast and metagame who has converted or not in a big crowd)

Divine Favor
Provides all nearby Faithful  (excluding the caster) (medium AoE) +1 Bonus to attack and weapon damage rolls, for 1 round per faithful affected. (Similar to casting True Strike with Greater Spell Focus: Enchantment)

Shield of Faith
Also grants faithful 5% Physical immunity for the duration

Aid
Grants faithful a +1 Divine Damage bonus to damage rolls

Darkfire
+1 Divine Damage added when cast on a Faithful.
Caps at 1d4 for non-Faithful.  Level 8+ get the 1d6 only when cast on a Faithful

Magic Vestment
Also grants a 1 damage Divine Damage shield to Faithful

Prayer
Faithful Allies in the area of effect also gain 5% move speed, and 1d6 Temp HP

Shield Other
If shielding a Faithful, grant them a 1d4 Divine Damage Shield for the duration

Divine Power
The faith of your party is rewarded as you channel your god's might in their defense! Gain +1 CON per faithful in a small AoE, to a maximum of 16 CON. If your CON is already 16 or higher,  it is not raised further.

Battletide
Allied faithful in range also gain the circumstance bonus as the caster does.



The specifics of course are up to change and balance, but thats the general theme of the idea. Cleric spells should be more potent when used on and around a party of people sharing that faith. If you're constantly traveling with a cleric, receiving the holy blessings of a god...maybe its worth considering converting
#4
Suggestions / Re: Perk Suggestion Thread
June 06, 2022, 11:05:45 PM
Sorcerer Perk: Warlock

Trading much of their potential in variety and utility for a focus upon destructive power, a Warlock has mastered enhancing basic cantrips into elemental blasts to be feared.

Level 1

  • Eldritch Blast - Ray of Frost, Electric Jolt, Flare, and Acid Splash become modified for the Warlock, casting elemental Eldritch Blasts instead.
  • Eldritch Blast deals 1d8 + CHA Modifier elemental damage
  • Non-cantrip spells per day are decremented to 2 spells per spell circle on Rest. (Ignores spell slot gear.)
  • Gain Light Armor Proficiency
  • -20% Arcane Spell Failure on armor


Level 5

  • Eldritch Blast deals 1d10 elemental damage

Level 8

  • Eldritch Blast deals 2d8 elemental damage





This perk is all about the Eldritch Blasts, and just pew-pewing and numbers given I've been balancing a 16 CHA sorc against a Heavy Crossbow fighter and a longbow fighter with rapid shot

Level 1
Crossbow Fighter: 1d10 per round (average 5 damage), 10% chance for x2 crit
Longbow Fighter: 2d8 per round (average 9 damage), 5% chance for x3 crit

Warlock: 1d8 + 3 per round (average 7 damage)

Level 5
Crossbow Fighter: 1d10 per round (average 5 damage), 10% chance for x2 crit.
Longbow Fighter: 2d8 per round (average 9 damage), 5% chance for x3 crit

Warlock: 1d10 + 3 per round (average 8 damage)

Level 8
Crossbow Fighter: 2d10 per round (average 11 damage), 10% chance for x2 crit.
Longbow Fighter: 3d8 per round (average 14 damage), 5% chance for x3 crit

Warlock: 2d8 + 3 per round (average 12 damage)




#5
Screen Shots & Obituaries / Ashan Vyre
March 27, 2022, 02:22:19 AM


Well. Ashan Vyre was a fun run, and probably my shortest character, though that was only to be expected, with how I was throwing him into dangerous events.

Ashan was a monster hunter. A peasant from the steadings, living on the borders of the Mongrelwoods, he grew up with a healthy respect, and hatred of the place. From his brother being sacrificed to the grove in the woods for being born deformed, to having to deal with constant mongrel raids and strikes on their land, until his family home and family were destroyed by a raid of monsters, he ended up with a deep, intense hatred of monsters in general, and mongrels specifically. His ultimate goal was the genocide of all mongrels, drag the Hidden One out of the shadows and burning it, thinking that would free the Ward of the mongrel deformities in the future.

He was willing to work with anyone that would help him with these goals, which is what led him to Orza.

A devout Yemanite, focused on Light being a gift and sign of civilization, Ashan was fond of anyone that followed a faith preaching the Light, or embracing the sun. He'd often speak of the Light of the Ward, and the like.

Ashan had big plans. He tried to make as many allies and contacts that he could, in order to rally them against the Mongrel Horde threat, with a goal of settling the mongrelwoods once the mongrels were wiped out.

Obviously these all got cut short when he was captured. Which was inevitable, or an outright FD, as anytime a mongrel event happened, he pushed his way to the front lines to hold against the beasts. Which wasn't always a good idea, as the PC was, at his highest level, level 7. And since he would take a death on the invasions, and respawn, he wasn't always back up to that full strength before the next one. At the time of his final death, Ashan was back down to level 4. But IC, he had to try. He simply couldn't sit out an attempt to strike at the Mongrels.

Stuff after he was captured is of course, FOIG, but he made the choices he thought would lead to his goals, and died before fulfilling them.

Thanks for everyone that helped interact with Ashan, and I hoped he brought some fun and flavour into the scene
#6
Saw an NPC wandering Castle Orza, went to talk to her.

Dialogue implies she's one of the NPCs offering a few different spells for money.

However, instead of listing the spells, she casts Acid Fog (ie: spell 0 in the .2da) on the person she's talking to.
#7
So, Calidor was my attempt at doing something new, and trying to be more impactful than my normal characters.




An elven barbarian, I played Calidor using the motto of 'Primal, not primitive'.  My goal with his personality was an attempt to distill 'elf' down as much as I could. He loved swordcraft, challenges, dancing and the arts.

He also spoke in iambic pentameter for a long time, but I eventually dropped it because I just couldn't get the responses out fast enough while keeping it to the rhythm. I wish I had kept it consistent for his entire life.

I took a lot of inspiration from Rakan, from league of legends for shaping how he interacted with things. Loud, boisterous, and capable.

[hide='Key quotes]

"The humans call it battle. It's just a dance."

"Nothing important should be taken seriously."

"Consequences only matter if I don't get away."

"They will remember my name!"

[hide=And some lesser ones]

"My fellow travelers, you are all about to witness my majestic epicness! ... unless I get killed, but... probably not!"

"I can't wait to get in there. I don't know what I'm going to do, but I am going to get in there!"

"We are seen dancing and thought insane - by those who can't hear the music."

"They've never seen moves like mine."

"I dance because I'm free!"

"Humans claim it is theirs. They fence us away and cover it in refuse."

"Step up again, I'll slap you down again."
[/hide]
[/hide]

He was arrogant, flamboyant, and brutal. And strong enough (probably my strongest PC by far) to back up doing what he wanted to do.  And he was amazing fun to play, and I'm thankful for the groups that he was able to interact with, especially the other elves (and the adopted bearded elves), Regent Sunspyre, Inquisitor Malik, and so many others he ran into.

He had an odd religion that only rarely got questioned; all elven souls were shards of Tey'lin, the first elf, the goddess of the stars that was broken and shattered into pieces by T'chun in eons past. When an elf died, that divine spark would become a star, until it was reborn. In this faith, all elves were immortal, so he never truly mourned any of his lost companions. They were simply out of his reach for a time. And all elven blood were elves, no matter how distant the ancestor. He berated some of his fellow elves for referring to half elves like Wednesday as 'lesser', and to their credit, they followed his beliefs in that.

It was a fantastic change of experience to be the front line, and not the support. Playing someone that was unchained by social protocols, or standings. He was an elf, unwelcome in the Peerage, and spoke his mind. Or just dove to action.

He was one of the early elves to fall in with Gilthalas Wealdath, and join House Wealdath, which was something that grated on him IC, though he only ever mentioned it to a handful. A free spirit, the chains of obligation and oaths restricted him, and he did resent it, while thoroughly believing and working for the cause, taking it as a sacrifice he needed to make. He tried to steer Gilthalas to be a responsible leader, pulling him aside and rebuking him when others simply accepted it.

He also beat down Malik at the Moonspear tournament, which was fun.

Sadly, his doom came from two things, my OOC work schedule for a new job severely cutting my time, and leaving me exhausted, and living too long.

Calidor was a character that should have burnt bright, and gone out in a blaze of glory. Instead, he survived, from trying to stop Blacksmile's resurrection, avoiding the T'chun death event in duties name, to allying with Velstra to try to stop the Count at the walls of 92. And so, he kind of sputtered out, with his friends playing at times I couldn't, and falling behind in the Rings to reach the Wealdath goal, until I just couldn't find the drive to play him.

And the DM loot you're all waiting for....
[hide=Loot]
Didn't have any. Was all off the shelf gear.
[/hide]


#8
Are you a vengeful hag, looking to punish those who break faith with you?
Maybe you're a High Priest, looking to bring your faith's disfavor upon those who betray your dogma?
Maybe you're just a spiteful wizard, raging against those who call you Mad?

If you are any of the above, or countless others, then BESTOW CURSE might be for you!

But right now, it is... lackluster. Thematically, and mechanically it doesn't feel quite as impactful as your other options would be for spells of the same level.

And we can fix that!

First, lets bring out some more of that sweet, sweet flavour.

[hide=The Big Book of Curses]

  • Curse of Draining - Your standard NWN curse. -2 to all stats. (GSF:Transmutation gives -3 to stats instead)
  • Curse of Stumbling - This curse brings a -1 Penalty to AC as you mess up your footwork... (GSF: Transmutation lowers AC by 2 instead)
  • Curse of Flailing - Here, we make our victim swing with less skill, granting them -2 AB (GSF: Transmutation lowers damage by 1)
  • Curse of Fumbling - Why make them less able to hit, when you can make your victim's  strikes weaker. -2 Damage (GSF: Transmutation lowers AB by 1)
  • Curse of Plodding - Its a fast paced world, but you make your victim move 10% slower... you monster (SF: Trans decreases reflex saves by 1. GSF:Trans lowers dodge AC by 1)
  • Curse of Tongues - Its hard to cast spells when you keep stumbling over your own tongue... 20% Spell Failure  (GSF: Trans lowers Spellcraft by 3)
  • Curse of Breaching - Maybe you're facing something that keeps ignoring your magic... why not curse them to lose 10 Spell Resist
  • Curse of Yeman - The flames of justice sear your unworthy soul. 20% Fire Vulnerability (GSF: Trans lowers saves vs fire by 1)
  • Curse of Gnipir - The great winter wolf's coming chills all to the bone. 20% Cold Vulnerability[ (GSF: Trans lowers saves vs Cold by 1)/li]
    • Curse of Klink - The Rumour Mill may be gone, but making people flinch at the news never gets old. 20% Sonic Vulnerability (GSF: Trans lowers saves vs Sonic by 1)
    • Curse of Fumigation - The gasses, oozes, and slimes of the world rejoice! 20% Acid vulnerability (GSF: Trans lowers saves vs Acid by 1)
    • Curse of the Storm - Maybe take cover when it storms... 20% Lightning vulnerability (GSF: Trans lowers saves vs Electricity by 1)
    • Curse of Vulnerability - Just making your victim a little worse, right when it matters most. -2 to all saves. (GSF: Trans lowers saves by 3)
    • Curse of Reactions - Dull their senses, then throw something at their face! -3 Reflex Saves
    • Curse of Constitution - Are your foes just proving too hardy? Ruin their digestion. -3 Fortitude Saves
    • Curse of the Mind - Slow their wits, and then make fun of them for it! They won't be able to make good rejoinders! -3 Will Save
    • Curse of Illumination - Are thieves getting you down? Well, if you can't put a bell on their collar, why not just make them glow like the sun? Applies Light and -3 Hide/Move Silent penalty
    • Curse of Eyesight - Maybe that guardsman is a little too on the ball. Why not steal away his eyesight. -3 Spot/Search
    • Curse of the Bridge - Curse your foe, then challenge them to a duel, post haste! 5% Physical vulnerability
    [/hide]

    Now, I hear you saying, "These curses are great options an all, but I really don't want to run up and curse my foes at melee range. What if they hit me back?"

    First, you are a coward. Second, have I got some good news for you!

    The second aspect of this Curse rework... Cursing from a Distance!

    Right now, all PCs have the option, with the correct tool, to drain blood from friends, foes, and even themselves. But once you have it, there isn't much you can do with it on its own.

    But we're here to change that. By performing one quick ritual, you can link this lifeless blood sample to its owner, and turn it into a Bloody Simulacrum!

    Casting Bestow Curse on a Bloody Simulacrum will transfer the spell to the person that kindly donated blood instead, consuming the Simulacrum in the process.

    Thats right... if you've got someones blood, you can slap a curse on them through it.  Don't take my word for it, heres a quote from a satisfied Curse Customer.

    "I love blood. I love curses. And I love not having to leave my Refuge." - Nicodemus Nephezar*

    *Nicodemus Nephezar could not be reached for comment, but we assume this is what he'd say.


    ---------Mechanics-----------

    What I'm proposing is twofold.

    First, the Curse Variety expansion, coming in one of three flavours.
    The curse is toggled by a simple variable stored on the players token.

    1. A player tool allows people to choose their curse from that conversation window.
    2. A Big Book of Curses book, with an On-Use conversation that allows the selection of one of the curses.
    3. A selection of books with an on-use, each offering one curse attunement per book , so the curse connoisseur has to collect their variety.

    My personal preference leans towards option 2, but I can see merits for each option.

    Second, the Bloody Simulacrum process.

    1. A player tool script, that can click on a blood and spawns the simulacrum.
    2. A ritual book, single use consumable or unlimited use, that can be used on blood to begin the process.

    The scripts are easily adapted to any of the situations. At present, I have it as a simple Player Tool script, but not being familiar with how EFU's player tool system is scripted and its formatting, can't customize it completely. Likewise for the On-Use script, though if given an example of formatting, I would be more than happy to complete those scripts.

    I have attempted to keep the power of the curses in line with the basic effects general power, but all the values are easily adjusted in a single block of the script for balancing.

    The Simulacrum summoning process uses an opposed spellcraft check for the victim to identify who has summoned one using their blood to give a chance at counter play/retribution.  Though there isn't a need for the person summoning the simulacrum to be the one to cast the curse. (And there is a slight delay on the simulacrum vanishing, so a well coordinated group/coven could perhaps lay down several curses at once...)

    In the end, I feel this system could open up/expand a few concepts and bring dark magicks to the masses, and give consequences to allowing your blood to float around other peoples inventories.

    And if it is ever wanted, a single snippet will expand the blood simulacrum targeting to other spells, though at this moment I can't think of ones that would benefit without breaking balance (which is why none of the curses apply any form of damage, only status effects. If you want to inflict damage/heal, you should need to be present).

    [hide]
    This snippet assumes that the spell target variable is the default oTarget

    //Is our target real, or a Bloody Simulacrum?
    if (TestStringAgainstPattern(GetName(oTarget), "Bloody Simulacrum"))
    {
        //if so, we need to get the real target
            string sTargetName = GetTag(oTarget);

            string sBloodTag = "";

            int nI;
            for (nI = 0; nI < GetStringLength(sTargetName); nI++)
            {
                if (GetSubString(sTargetName, nI, 1) == "_")
                {
                    sBloodTag += " ";
                }
                else
                {
                    sBloodTag += GetSubString(sTargetName, nI, 1);
                }
            }

            sTargetName = sBloodTag;

            object oPC = GetFirstPC();

            while(GetIsObjectValid(oPC))
            {
                if(GetName(oPC) == sTargetName)
                {
                    ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_DEMON_HAND), oTarget);
                    DestroyObject(oTarget, 3.0f);

                    oTarget = oPC;
                }
                oPC = GetNextPC();
            }

    }
[/hide]
---------Scripts-----------

[hide=Bestow Curse - nw_s0_bescurse]

   In the variable section, this section needs to be changed to correctly pull off of player tokens.
//Fetch the variable from either PC or PC token
    //nCurse = GetTokenInt(GetLastSpellCaster(), "CCS_Curse");
    nCurse = GetLocalInt(OBJECT_SELF, "CCS_Curse");




//::///////////////////////////////////////////////
//:: Bestow Curse
//:: NW_S0_BesCurse.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    Afflicted creature must save or suffer a penalty.
    This is a supernatural effect.
*/
//:://////////////////////////////////////////////
//:: Created By: Bob McCabe
//:: Created On: March 6, 2001
//:://////////////////////////////////////////////
//:: Last Updated By: Dhund
//:: On: September 12, 2021

//Our Flavours of Curses
//0  Curse of Draining - Standard Curse, -2 to all stats
//1  Curse of Stumbling - -1 AC
//2  Curse of Flailing - -2 AB
//3  Curse of Fumbling - -2 Damage
//4  Curse of Plodding - 10% Movement Speed Decrease
//5  Curse of Tongues - 20% Arcane Spell Failure
//6  Curse of Breaching - -10 Spell Resist
//
//7  Curse of Yeman - 20% Fire Vulnerability
//8  Curse of Gnipir - 20% Cold Vulnerability
//9  Curse of Klink - 20% Sonic Vulnerability
//10  Curse of Fumigation - 20% Acid Vulnerability
//11  Curse of the Storm - 20% Lightning Vulnerability
//
//12  Curse of Vulnerability - -2 Universal Saves
//13  Curse of Reactions - -3 Reflex Save
//14  Curse of Constitution - -3 Fortitude Save
//15  Curse of the Mind   - -3 Will Save
//
//16  Curse of Illumination - Light and -3 Hide/MoveSilent
//17  Curse of Eyesight - -3 Spot/Search
//18  Curse of the Bridge - 5% Physical Vulnerability


#include "NW_I0_SPELLS"
#include "x2_inc_spellhook"
#include "inc_char_token"

void main()
{

/*
  Spellcast Hook Code
  Added 2003-06-23 by GeorgZ
  If you want to make changes to all spells,
  check x2_inc_spellhook.nss to find out more

*/

    if (!X2PreSpellCastCode())
    {
    // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
        return;
    }

// End of Spell Cast Hook


    //Declare major variables
    object oTarget = GetSpellTargetObject();
    effect eVis = EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE);
    //We need a Curse effect to allow it to be a curse
    effect eCurse = EffectCurse(0, 0, 0, 0, 0, 0);
    //If we want the custom curse to have a unique visual, we'll change it here
    effect eVisTwo = EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE);

    //Pull the curse variable from the PC. Defaults to 0 if none set, or outside the range
    int nCurse = 0;

    //Fetch the variable from either PC or PC token
    //nCurse = GetTokenInt(GetLastSpellCaster(), "CCS_Curse");
    nCurse = GetLocalInt(OBJECT_SELF, "CCS_Curse");

    //Do we have Spell Focus or Greater Spell Focus?
    int nSpellPower = 0;
    if (GetHasFeat(FEAT_GREATER_SPELL_FOCUS_TRANSMUTATION, OBJECT_SELF))
    {
        nSpellPower = 2;
    }
    else if (GetHasFeat(FEAT_SPELL_FOCUS_TRANSMUTATION, OBJECT_SELF))
    {
        nSpellPower = 1;
    }

    //Make sure its a valid curse (increment value if adding new curses...)
    if (nCurse < 0 && nCurse > 18)
    {
        nCurse = 0;
    }

    //Determine which curse to use
    switch(nCurse)
    {
        case 0: //Curse of Draining - Standard Curse, -2 to all stats
                eCurse = EffectLinkEffects(eCurse, EffectCurse(2, 2, 2, 2, 2, 2));

                //Do we have extra/changed effects for SF or GSF Transmutation?
                //SF: Transmutation
                if (nSpellPower == 2)
                {
                    //Change effect to -3 to all stats
                    eCurse = EffectCurse(3, 3, 3, 3, 3, 3);
                }


        break;
        case 1: //Curse of Stumbling - -1 AC
                eCurse = EffectLinkEffects(eCurse, EffectACDecrease(1, AC_DODGE_BONUS, AC_VS_DAMAGE_TYPE_ALL));

                //Do we have extra/changed effects for SF or GSF Transmutation?
                //SF: Transmutation
                if (nSpellPower == 2)
                {
                    //Removing an additional 1 AC
                    eCurse = EffectLinkEffects(eCurse, EffectACDecrease(1, AC_NATURAL_BONUS, AC_VS_DAMAGE_TYPE_ALL));
                }

        break;
        case 2: //Curse of Flailing - -2 AB
                eCurse = EffectLinkEffects(eCurse, EffectAttackDecrease(2, ATTACK_BONUS_MISC));

                //Do we have extra/changed effects for SF or GSF Transmutation?
                //SF: Transmutation
                if (nSpellPower == 2)
                {
                    //Subtract 1 damage
                    eCurse = EffectLinkEffects(eCurse, EffectDamageDecrease(1, DAMAGE_TYPE_MAGICAL));
                }

        break;
        case 3: //Curse of Fumbling - -2 Damage
                eCurse = EffectLinkEffects(eCurse, EffectDamageDecrease(2, DAMAGE_TYPE_MAGICAL));

                //Do we have extra/changed effects for SF or GSF Transmutation?
                //SF: Transmutation
                if (nSpellPower == 2)
                {
                    //Subtract one AB too
                    eCurse = EffectLinkEffects(eCurse, EffectAttackDecrease(1, ATTACK_BONUS_MISC));
                }

        break;
        case 4: //Curse of Plodding - 10% Movement Speed Decrease
                eCurse = EffectLinkEffects(eCurse, EffectMovementSpeedDecrease(10));
                eVisTwo = EffectVisualEffect(VFX_IMP_SLOW);

                //Do we have extra/changed effects for SF or GSF Transmutation?
                //SF: Transmutation
                if (nSpellPower == 1)
                {
                    //Lower Reflex saves by 1
                    eCurse  = EffectLinkEffects(eCurse, EffectSavingThrowDecrease(SAVING_THROW_REFLEX, 1, SAVING_THROW_TYPE_ALL));
                }
                //GSF: Transmutation
                else if (nSpellPower == 2)
                {
                    //Lower Dodge AC by 1
                    eCurse = EffectLinkEffects(eCurse, EffectACDecrease(1, AC_DODGE_BONUS, AC_VS_DAMAGE_TYPE_ALL));
                }
        break;
        case 5: //Curse of Tongues - 20% Arcane Spell Failure
                eCurse = EffectLinkEffects(eCurse, EffectSpellFailure(20, SPELL_SCHOOL_GENERAL));
                eVisTwo = EffectVisualEffect(VFX_IMP_HEAD_MIND);

                //Do we have extra/changed effects for SF or GSF Transmutation?
                //SF: Transmutation
                if (nSpellPower == 2)
                {
                    //Lower spellcraft by 2
                    eCurse = EffectLinkEffects(eCurse, EffectSkillDecrease(SKILL_SPELLCRAFT, 3));
                }
        break;
        case 6: //Curse of Breaching - -10 Spell Resist
                eCurse = EffectLinkEffects(eCurse, EffectSpellResistanceDecrease(10));
                eVisTwo = EffectVisualEffect(VFX_IMP_HEAD_ODD);
        break;
        case 7: //Curse of Yeman - 20% Fire Vulnerability
                eCurse = EffectLinkEffects(eCurse, EffectDamageImmunityDecrease(DAMAGE_TYPE_FIRE, 20));
                eVisTwo = EffectVisualEffect(VFX_IMP_FLAME_M);

                //Do we have extra/changed effects for SF or GSF Transmutation?
                //SF: Transmutation
                if (nSpellPower == 2)
                {
                    //Lower saves vs Fire
                    eCurse = EffectLinkEffects(eCurse, EffectSavingThrowDecrease(SAVING_THROW_ALL, 1, SAVING_THROW_TYPE_FIRE));
                }
        break;
        case 8: //Curse of Gnipir - 20% Cold Vulnerability
                eCurse = EffectLinkEffects(eCurse, EffectDamageImmunityDecrease(DAMAGE_TYPE_COLD, 20));
                eVisTwo = EffectVisualEffect(VFX_IMP_FROST_S);

                //Do we have extra/changed effects for SF or GSF Transmutation?
                //SF: Transmutation
                if (nSpellPower == 2)
                {
                    //Lower saves vs Cold
                    eCurse = EffectLinkEffects(eCurse, EffectSavingThrowDecrease(SAVING_THROW_ALL, 1, SAVING_THROW_TYPE_COLD));
                }
        break;
        case 9: //Curse of Klink - 20% Sonic Vulnerability
                eCurse = EffectLinkEffects(eCurse, EffectDamageImmunityDecrease(DAMAGE_TYPE_SONIC, 20));
                eVisTwo = EffectVisualEffect(VFX_IMP_SONIC);

                //Do we have extra/changed effects for SF or GSF Transmutation?
                //SF: Transmutation
                if (nSpellPower == 2)
                {
                    //Lower saves vs Sonic
                    eCurse = EffectLinkEffects(eCurse, EffectSavingThrowDecrease(SAVING_THROW_ALL, 1, SAVING_THROW_TYPE_SONIC));
                }
        break;
        case 10: //Curse of Fumigation - 20% Acid Vulnerability
                eCurse = EffectLinkEffects(eCurse, EffectDamageImmunityDecrease(DAMAGE_TYPE_ACID, 20));
                eVisTwo = EffectVisualEffect(VFX_IMP_ACID_S);

                //Do we have extra/changed effects for SF or GSF Transmutation?
                //SF: Transmutation
                if (nSpellPower == 2)
                {
                    //Lower saves vs acid
                    eCurse = EffectLinkEffects(eCurse, EffectSavingThrowDecrease(SAVING_THROW_ALL, 1, SAVING_THROW_TYPE_ACID));
                }
        break;
        case 11: //Curse of the Storm - 20% Lightning Vulnerability
                eCurse = EffectLinkEffects(eCurse, EffectDamageImmunityDecrease(DAMAGE_TYPE_ELECTRICAL, 20));
                eVisTwo = EffectVisualEffect(VFX_IMP_LIGHTNING_S);

                //Do we have extra/changed effects for SF or GSF Transmutation?
                //SF: Transmutation
                if (nSpellPower == 2)
                {
                    //Lower saves vs lightning
                    eCurse = EffectLinkEffects(eCurse, EffectSavingThrowDecrease(SAVING_THROW_ALL, 1, SAVING_THROW_TYPE_ELECTRICITY));
                }
        break;
        case 12: //Curse of Vulnerability - -2 Universal Saves
                eCurse = EffectLinkEffects(eCurse, EffectSavingThrowDecrease(SAVING_THROW_ALL, 2, SAVING_THROW_TYPE_ALL));

                //Do we have extra/changed effects for SF or GSF Transmutation?
                //SF: Transmutation
                if (nSpellPower == 2)
                {
                    //Do -3 Saves instead
                    eCurse = EffectCurse(0, 0, 0, 0, 0, 0);
                    eCurse = EffectLinkEffects(eCurse, EffectSavingThrowDecrease(SAVING_THROW_ALL, 3, SAVING_THROW_TYPE_ALL));
                }
        break;
        case 13: //Curse of Reactions - -3 Reflex Save
                eCurse = EffectLinkEffects(eCurse, EffectSavingThrowDecrease(SAVING_THROW_REFLEX, 3, SAVING_THROW_TYPE_ALL));

        break;
        case 14: //Curse of Constitution - -3 Fortitude Save
                eCurse = EffectLinkEffects(eCurse, EffectSavingThrowDecrease(SAVING_THROW_FORT, 3, SAVING_THROW_TYPE_ALL));

        break;
        case 15: //Curse of the Mind   - -3 Will Save
                eCurse = EffectLinkEffects(eCurse, EffectSavingThrowDecrease(SAVING_THROW_WILL, 3, SAVING_THROW_TYPE_ALL));

        break;
        case 16: //Curse of Illumination - Light and -3 Hide/MoveSilent
                eCurse = EffectLinkEffects(eCurse, EffectSkillDecrease(SKILL_HIDE, 3));
                eCurse = EffectLinkEffects(eCurse, EffectSkillDecrease(SKILL_MOVE_SILENTLY, 3));
                eCurse = EffectLinkEffects(eCurse, EffectVisualEffect(VFX_DUR_LIGHT_YELLOW_20));

        break;
        case 17: //Curse of Eyesight - -3 Spot/Search
                eCurse = EffectLinkEffects(eCurse, EffectSkillDecrease(SKILL_SPOT, 3));
                eCurse = EffectLinkEffects(eCurse, EffectSkillDecrease(SKILL_SEARCH, 3));

        break;
        case 18: //Curse of the Bridge - 5% Physical Vulnerability
                eCurse = EffectLinkEffects(eCurse, EffectDamageImmunityDecrease(DAMAGE_TYPE_BLUDGEONING, 5));
                eCurse = EffectLinkEffects(eCurse, EffectDamageImmunityDecrease(DAMAGE_TYPE_PIERCING, 5));
                eCurse = EffectLinkEffects(eCurse, EffectDamageImmunityDecrease(DAMAGE_TYPE_SLASHING, 5));

        break;
    }

    //Is our target real, or a Bloody Simulacrum?
    if (TestStringAgainstPattern(GetName(oTarget), "Bloody Simulacrum"))
    {
        //if so, we need to get the real target
            string sTargetName = GetTag(oTarget);

            string sBloodTag = "";

            int nI;
            for (nI = 0; nI < GetStringLength(sTargetName); nI++)
            {
                if (GetSubString(sTargetName, nI, 1) == "_")
                {
                    sBloodTag += " ";
                }
                else
                {
                    sBloodTag += GetSubString(sTargetName, nI, 1);
                }
            }

            sTargetName = sBloodTag;

            object oPC = GetFirstPC();

            while(GetIsObjectValid(oPC))
            {
                if(GetName(oPC) == sTargetName)
                {
                    ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_DEMON_HAND), oTarget);
                    DestroyObject(oTarget, 3.0f);

                    oTarget = oPC;
                }
                oPC = GetNextPC();
            }

    }

    //Make sure that curse is of type supernatural not magical
    eCurse = SupernaturalEffect(eCurse);
//    if(!GetIsReactionTypeFriendly(oTarget))
    {
        //Signal spell cast at event
        SignalEvent(oTarget, EventSpellCastAt(oTarget, SPELL_BESTOW_CURSE));
         //Make SR Check
         if (!MyResistSpell(OBJECT_SELF, oTarget))
         {
            //Make Will Save
            if (!/*Will Save*/ MySavingThrow(SAVING_THROW_WILL, oTarget, GetSpellSaveDC()))
            {
                //Apply Effect and VFX
                ApplyEffectToObject(DURATION_TYPE_PERMANENT, eCurse, oTarget);
                ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
                ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisTwo, oTarget);
            }
        }
    }
}

[/hide]

[hide=Player Tool implementation of Bloody Simulacrum summoning]

Something odd with the forums keeps happening.         

if (nValid = = 0)
        {
            SendMessageToPC(oUser, "No bond could be made");
        }


This section will not post if done correctly. The space between the '= =' in the IF statement needs to be removed to work

#include "inc_vistransform"
void main()
{
    object oUser = OBJECT_SELF;

    //Make sure the tool was used on a blood vial
    object oClicked = GetSpellTargetObject(); //Need to get clicked item here

    string sClicked = GetName(oClicked);

    //Check if its a vial of blood...
    string sBloody = GetStringRight(sClicked, 5);
    if (TestStringAgainstPattern(sBloody, "Blood"))
    {

        int nNameLength = GetStringLength(sClicked);
        string sBloodName = GetSubString(sClicked, 0, nNameLength - 8);


        SendMessageToPC(oUser, "You attempt to create a bond between " + sBloodName + "'s Blood and " + sBloodName);

        //Is the player online?

        object oPC = GetFirstPC();
        int nValid = 0;
        while(GetIsObjectValid(oPC))
        {
            if(GetName(oPC) == sBloodName)
            {
                nValid = 1;
                SendMessageToPC(oUser, "You create the bond...");

                //Does the other PC detect it? Opposed Spellcraft checks
                int nDC = d20(1) + GetSkillRank(SKILL_SPELLCRAFT, oUser, FALSE);
                if (GetIsSkillSuccessful(oPC, SKILL_SPELLCRAFT, nDC))
                {
                     SendMessageToPC(oUser, "A chill runs down your spine as you sense " + GetName(oUser) + " forge a connection to you...");
                }
                else
                {
                    SendMessageToPC(oUser, "A chill runs down your spine...");
                }


                //Now we make the name into something we can store in a new tag...
                string sBloodTag = "";

                int nI;
                for (nI = 0; nI < GetStringLength(sBloodName); nI++)
                {
                    if (GetSubString(sBloodName, nI, 1) == " ")
                    {
                        sBloodTag += "_";
                    }
                    else
                    {
                        sBloodTag += GetSubString(sBloodName, nI, 1);
                    }
                }

                object oBloodSim = CreateObject(OBJECT_TYPE_CREATURE, "bloodysimulacrum", GetLocation(oUser),
                    FALSE, sBloodTag);

                ApplyVisualTransformOnTarget(oBloodSim, "scale", "x", "TO", 0.4f);

                ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_IMP_EVIL_HELP), oUser, 0.4f);

                //Burn the blood as it is used, then in a minute, get rid of the simulacrum
                DestroyObject(oClicked);
                DestroyObject(oBloodSim, 60.0f);

            }
                oPC = GetNextPC();
        }

        if (nValid = = 0)
        {
            SendMessageToPC(oUser, "No bond could be made");
        }



    }
    else
    {
        SendMessageToPC(oUser, "This is not a vial of blood.");
    }

}

[/hide]

[hide=Bloody Simulacrum NPC]
Not a script, but an NPC. For this, I was just using the Ruby Golem model, with all scripts removed, and a resref of 'bloodysimulacrum'
[/hide]
#9


Was thinking today, and its long past time I put one of these up for my characters. So working backwards, with the most recent character...Caleb.



Caleb came into existence right at the end of the Torque War, and the Clocktower Accords, as that seemed a fitting leaving point for my prospector Griffin, and the Accountants and Weavers were being opened for players.

A Ticker born kid, Caleb had basically his entire families hopes pinned on him, as they pooled money for his wizardry lessons from an old entertainer mage that lived near Glumdrum. Being Tickerborn, he'd seen  all the various conflicts, losing friends and family against retainers, lizards, and barbarians, but one thing always stood strong, even when the rest of Ticker bowed; the Adamantine Vault. This order appealed to him, and so, dressed up in his finery, little level 3 Caleb (who, for the first few weeks went around wearing robes that were emoted as too large for him, their sleeves being massive and ill fitting) applied for the Accountants.

Shuffled to Arek and the Accountant Irregulars (as opposed to the actual accounting Accountants, where he might have made a much better fit), he just barely convinced the rogue to give him a chance.  And he got in. A small group of Accountants, but in extremely early for players. And it was fun.

Caleb was all about security, and integrity. And he was an optimist. He 100% bought in that the Vault being a major guild was for the best, and would stabilize Ticker and beyond.

While he did do some adventuring, and crafting the majority of his time was spent merchanting (using the shop name 'The Open Vault', he'd brew potions, and buy and sell equipment, ending up funding a significant amount of his fellow Accountants and their plots. But he also worked for a bank, and did loans, which surprisingly, never had an issue. And between Caleb and Caston both doing essentially the same role, I've realized thats my personal favorite spot to be as a player. Supplying and supporting, so this was a blast.

While over time he made some friends, Caleb ended up being personally loyal to Arek Vlasi, and was his second at Accord meetings, representing the Vault in those meetings. While at first he was loyal, and fearful of Tchamorrar, the Guild master's actions and disloyalty to his minions kept driving a wedge there. The Accountants were given objectives, and with some clever dealing and politicking, we'd manage them, only for Oscar to change his mind, or destroy their progress, leaving Caleb feeling more or less useless to Tchamorrar, and eventually a bit resentful, though he never allowed it to show. He was a professional! With a life long contract.

When the Union rioted against the Weavers, Caleb went and fetched the appropriate Retainers to give a response... delayed enough that they couldn't do anything, but still there in time to see that the Vault and Caleb were allies. With the Union replacing the Weavers' as a signatory guild, Caleb was part of the negotiations and work to quickly bring the Union under Vault control as a puppet vote, though that was smashed when Oscar threatened the Union leader's life in public, turning him against the Vault.

The Slayer Kastian was a frequent customer of both the Vault, and Caleb personally, and one of my proudest moments of spellcraft came with getting Kastian out of the Vault, while being hunted by the Guild of Slayers, and successfully managing to get him to go invisible through the back sewer exits, while Caleb walked to the market, and a third Mirror Image of Kastian came running from back by the Danebluff statue, charged past his hunters and towards the Rumour Mill before vanishing, confounding his pursuers.

During the Banner Tournament, Caleb tried working deals with several houses, but primarily backing Kastian as the Sunpurse champion. We all remember how that ended though, with Kastian betraying the points to the Nothing of Moonspear, leaving the Accountants trying to work out a way to hunt down the hiding Kastian and kill him to settle their debts.

Unfortunately, around this as things got rather intense, right when Arek was killed, I had to significantly cut back my playtime, and ended up being off of EFU for some time, coming back to Ticker destroyed, Oscar dead, and presumably Caleb either dead as well, or living in comfort elsewhere with his family.  So sadly, Caleb's story never really got a huge conclusion, which.. is kind of fitting. He was a background character, there to flesh out and support others, and not a spotlight character himself.

In summary, Caleb was a naive Ticker kid, way in over his head, trusting that what he was doing was for the best of Ticker, and its people. He just wanted to do business legit, without blackmail, threats or coercion. And every one of his guildmates seemed the opposite at times, causing some fun friction. Especially when Arek kidnapped Gabrielle Winespill, causing Ruul Velstra to threaten the Vault directly.


The phat loot. Its what you're all here for, I know it.

[hide=The Loot]
I'm afraid you're out of much luck. Caleb wore a standard Accountant uniform

[hide=Uniform][/hide]


Aside from the belt, and clothes, all his gear was basic stuff he bought and sold from other players.

And..the Spellvine.

This was his darkest secret. Following a quest he went on to a changeling tomb with a number of Retainers of the Peerage, he had the easy potential/curse to become a changeling. This happening would completely alter the character, and so I decided early on with it, what conditions he'd have before he'd resort to it, because by this time he was a level 9 wizard, and had a lot of options to him.  Basically, he had to be in a situation where he feared for his life and his spells wouldn't help him. That never happened, and so..he never once used the active part of this item. If he ever did, plan was he'd go on the run to the Ponds then deep into the Rings, and abandon Ticker, being hunted for that betrayal and as a changeling. But...it never happened.

Ironically, the one person he wanted to speak to about this, due to a shared connection was very difficult to approach due to political reasons, being a major Nephezar retainer, and would actually be the one leading the force against the Adamantine Vault... if I had been active at the time, its possible Caleb would have defected to follow Eleleth.

[hide=Belt]

[/hide]

[/hide]
#10
She was one of Griffin Banick's friends. He was always hoping to be able to catch up to her and the Breakers, but never managed to get a key beyond 95 before the Torc War ended. Still, for the times they had in the 99th and areas connected, like the seams, he enjoyed it
#11
[IC Posting of this position]

Hello!

So, my character, Caleb Lensan, is getting ready to actively pursue one of his character goal's major projects, which will include going a bunch of places, doing a bunch of research, and creation. And I realized.. its pretty much what a grad student/wizard apprentice is for!

So... Caleb is a wizard looking for an apprentice/lab assistant.

This would probably fit a new (or newish, low level) PC best, in particular one with wizard levels, looking to learn magic, alchemy, tinkering, and certain hidden aspects of the City of Ring's lore relevant to the project goals.

I think it would be fantastic fun to start from scratch with a PC, and show them how to master each circle and school of magic, and the various crafting systems, so if diving into EFU's custom crafting is something you've never done, this could be a great chance to learn in as safe an environment as possible, with oversight.

The notices IC are being focused around Ticker's poorer areas, to give his fellow Tickerfolk the opportunity to rise out of the poverty present in the Square and learn a valuable trade, but the role will work with Ticker, Peerage, Ponds, or Awakened,  of any race as long as they are in good standing with Ticker Square and the Vault. (So, no monster apprentices this time, please!)

If this seems like something you'd like to try pursuing, I hope to find you IG, or to talk here, or on discord (as Dhund there as well), if you want to chat about a possible PC

Timewise, North American evening and weekends will probably work best for ingame overlap.
#12
Suggestions / Re: Weapon proficiency (Dwarf)
September 17, 2020, 07:07:08 AM
Also, Dwarven Waraxes
#13
Bug Reports / Regroup scribing cost bug
September 14, 2020, 05:07:43 AM
Scribing a copy of Regroup costs 225 gold, as a 1st level spell, I believe this may be a bug left over from when it was a higher level spell?
#14
As much as I would enjoy it from the side of the mage doing the counterspelling, there is a big flaw in it: It destroys the strategy you currently would employ to counteract it. A mage with a Dispel Magic now has you completely locked out of everything from cantrips up to 3rd circle spells.  You can't burn their universal counters (dispels) and out strategize them if they lose nothing from the attempts
#15
Currently exists for potion bottles. I am unsure if anyone sells the herb bundles that exist though