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

Topics - Cruzel

#1
The pillar breaks invis presumably bc the King/DMs wants sporting challenge and whatnot?

Make it so the random potion and item drops during dispensaries will reveal the player picking them up. The last few dispensaries I've seen, there have been PCs ninja-grabbing runes and prestigious goods.

I get that there are sparks and etc. in the meantime, but ninja-looting is boring and unfun gameplay. Impose a risk on opportunism so the ballsy people can be ballsy and steal stuff/get called on it ICly
#2
Rowan's store now seems to accept things for sale, that given the nature of his store seems unintentional.

Various things that are generally sellable only to toyfolly or the late jebedezra jeckyls can be sold to Rowan for the prices offered by the latter.  PM me for details.
#3
Player Workshop / Undead 2.0
October 16, 2019, 08:06:22 PM
Ok.  These are scripts that work 100% as-is, but will need some tweaks to work properly with EFU systems. I left in the placeholders and debugs so other workshop friends can fiddle :)

This requires a lot of little tweaks to a lot of scripts, so here's the breakdown:

What this all does:

Creates an object rather than a summon effect. This means the zombo will remain after logout, fully buffed, enchanced and whatnot. It can be freely released and reclaimed, allowing necromancers to "Store" their undead friends in a secluded place while they visit hubs and such, and reclaim them later. They are flagged appropriately so that dismissal/banishment can still affect them, despite not being summons.

ANIMATE DEAD SPELLSCRIPT
[hide]  Not much of this is needed.  Delete the EffectSummonCreatre() and replace it with  all code between "KEEP BELOW" and "KEEP ABOVE" Swap out the variable names for what is used for EFU summoning points.  (Possibly necessary:  Add function from a later snippet to manually unsummon mirror images/other summons, but ONLY IF efu's spellhook does not handle this already)
Quote#include "x2_inc_spellhook"

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
    int nMetaMagic = GetMetaMagicFeat();
    object oPC = OBJECT_SELF;
    int nCasterLevel = GetCasterLevel(OBJECT_SELF);
    int nDuration = GetCasterLevel(OBJECT_SELF);
    nDuration = 24;
    //effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_UNDEAD);
    effect eSummon;
    //Metamagic extension if needed
    int nSummoningPoints = GetLocalInt(oPC, "nSummonPool");   // REPLACE WITH EFU VARIABLES
    int nSummonMax       = GetLocalInt(oPC, "nSumMax");       // Replace with EFU VARIABLES

// Placeholder mostly. The ONLY line that matters here for efu is between the next comments

    if (nSummoningPoints <= nSummonMax)  // Check for room in summoning pool. Existing EFU  Function, insert below code into that function
      {
      // KEEP BELOW
       string sTag = "NW_S_ZOMBTYRANT";  // Replace this placeholder with whatever you use to determine what strref animate dead summons.
       object oZombo = CreateObject(OBJECT_TYPE_CREATURE, sTag, GetSpellTargetLocation(), FALSE, "zombo_"+GetPCPublicCDKey(oPC));
        ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUMMON_UNDEAD), GetSpellTargetLocation());
        SetLocalInt(oZombo, "nDismissable", 1); // Add variable for dismissal and banishment to see it as a target
        AddHenchman(oPC, oZombo);


        SetLocalInt(oZombo, "nSummonCost", 10);    // placeholder for debug so I wouldn't have to make a creature template w/ variables. Delete this.
        SetLocalInt(oPC, "nSummonPool", nSummoningPoints + GetLocalInt(oZombo, "nSummonCost")); // REPLACE WITH EFU VARIABLES FOR CURRENT POOL AND THE SUMMON'S COST

      // KEEP ABOVE

// INSERT OPTIONAL SUMMON/MIRROR HANDLES HERE IF NEEDED.





      }
}

[/hide]

Update to RELEASE UNDEAD player tool:   (Rename it to Release/Reclaim Undead)
[hide]

Very straightforward. If undead is clicked while owned, it releases.   If  undead is clicked by a PC who didn't make it, or a PC who is at/over their summoning pool limit, nothing happens.  Otherwise if clicking their own zombies while released (or after logout) the zombie is reclaimed.  Clicking on self will recalculate the summoning pool for the PC and fix any errors.

Quote
void main()
{
object oPC = OBJECT_SELF;
object oTarget = GetSpellTargetObject();
location lTarget = GetSpellTargetLocation();
string sTag = GetTag(oTarget);
int nMax = GetLocalInt(oPC, "nSumMax");               // Replace with EFU variables for summoning pool CAP
int nCost = GetLocalInt(oTarget, "nSummonCost");      // Replace with EFU variables for how much the minion costs
int nPool = GetLocalInt(oPC, "nSummonPool");          // Replace with EFU variables for how many points PC is currently using from pool.

//Manually recalculate summoning pool if self is targeted. This closes off errors caused by edge cases

if (oTarget == oPC)
{
int i =1;
SetLocalInt(oPC, "nSummonPool", 0);
object oHench = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, i);
object oSummon = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, i);
// REPLACE WITH EFU VARIABLES. Loops through each hench, grabbing their variables, then each minion
while (GetIsObjectValid(oHench) != FALSE)
   {
    nPool = GetLocalInt(oPC, "nSummonPool");
    nCost = GetLocalInt(oHench, "nSummonCost");
    SetLocalInt(oPC, "nSummonPool", nPool + nCost);
    oHench = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, i++);
   }
// Remove below, if summons + undead at same time undesired.
i = 1;

    while (GetIsObjectValid(oSummon) != FALSE)
     {
        nPool = GetLocalInt(oPC, "nSummonPool");
        nCost = GetLocalInt(oSummon, "nSummonCost");
        SetLocalInt(oPC, "nSummonPool", nPool + nCost);
         oSummon = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC, i++);
     }
// Remove above if summons + undead undesired

//Feedback Message.
  SendMessageToPC(oPC, "Summoning Pool Recalculated: You now have " + IntToString(GetLocalInt(oPC, "nSummonPool")) + " out of " + IntToString(GetLocalInt(oPC, "nSumMax")) + " points available ");
  return;
}


// Auth Check to See if the PC created this zombo; Play message and abort if not the creator
if (sTag != "zombo_"+GetPCPublicCDKey(oPC)) { SendMessageToPC(oPC, "This creature was not animated by you, or is not undead. It will not follow your commands."); return; }



// Auth Check to verify summoning pool cap. Placeholder function, as this can be copy/pasted from summon scripts.
if ((nPool + nCost) >= nMax )
{ SendMessageToPC(oPC, "This creature is too powerful to control in addition to those you have already summoned"); return; }


// Remove the Henchman if already controlled. Modify summoning pool accordingly.

if (GetMaster(oTarget) == oPC)

  {
   RemoveHenchman(oPC, oTarget);
   SetLocalInt(oPC, "nSummonPool", nPool - nCost);  // Lower pool cost. Replace variables with EFU ones
   SendMessageToPC(oPC, "This minion has been released from your control and will act of its own accord"); //Debug, remove if desired.
   // add VFX if desired.
  }


// Otherwise, we take control and modify the pool;
else
{
   AddHenchman(oPC, oTarget);
   ClearPersonalReputation(oTarget, oPC); // Edge Case handle: if the PC had hit them with an AOE or something while released. Stop your own zombos from killing you while blue.
   SetLocalInt(oPC, "nSummonPool", nPool + nCost);  // Lower pool cost. Replace variables with EFU ones
   SendMessageToPC(oPC, "This undead creature bends once more to your will as your magics influence it."); //Debug, remove if desired.
  // add VFX if desired.


  // BELOW TWO FUNCTIONS PERFORM SAME PURPOSE. CHOOSE WHICH IS IDEAL

                                   // OPTION ONE:

   //  INSERT "Fake" SUMMON EVENT HERE TO UNSUMMON MIRROR IMAGES (AND OTHER SUMMONS IF DESIRED) Ugly, but cleanest and cheapest for CPU. Debug mostly.
   // Recommended not to use this unless necessary.
   ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, EffectSummonCreature(""),lTarget, 0.01);


                              // OPTION TWO

     //  This lets you keep summons out but will destroy mirror images. "nMirror" must be swapped to whatever identifier you have on mirror clones.
   //  Or manually loop associates and poof the images. Less ideal, more GPU cost.
   int i =1;
   object oMirror = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, i);

   while (GetIsObjectValid(oMirror) != FALSE)
   {
     if (GetLocalInt(oMirror, "nMirror") == 1)    // make sure they're flagged as a mirror image, prevents shenanigans with things the PC didn't create
      {
       DestroyObject(oMirror);
      }
    oMirror = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC, i++);
   }

}


}
[/hide]

OnModuleLoad()
[hide]
Here, all we need is one line.
Quote

SetMaxHenchmen(X);

Replace X with something reasonable (20-25?).  This variable controls the maximum amount of "henchmen" type minions a PC can have. Set it too low, and a player might hit the cap despite having more room in their pool. 

[/hide]

Zombie OnDeath() Event:
[hide]
Very Simple  addition;  Allow us to  make sure summon pool updates properly as zombos die.
Quote
object oMaster = GetMaster(OBJECT_SELF);
SetLocalInt(oMaster, "nSummonPool",GetLocalInt(oMaster, "nSummonPool" ) -  GetLocalInt(OBJECT_SELF, "nSummonCost"));
[/hide]

On client enter
[hide]
This is probably already a thing. Clear the summoning pool variable, since the PC won't be controlling anything when they login.  if this isn't there, use appropriate summoning pool variable
Quote
SetLocalInt(oPC, "nSummonPool", 0);
/quote]
[/hide]
DISMISSAL/BANISHMENT CHANGES

[hide]

There's probably already another function added to these to handle mirror images. You can pretty much copy/paste those.  and all you need to add is the following, to your conditional statement.

Quote
|| GetLocalInt(oTarget, "nDismissable") == 1

The code in practice, for the workship fiddlers;

Quote
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"

void main()
{

/*
  Spellcast Hook Code
  Added 2003-06-20 by Georg
  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 oMaster;
    effect eVis = EffectVisualEffect(VFX_IMP_UNSUMMON);
    effect eImpact = EffectVisualEffect(VFX_FNF_LOS_EVIL_30);
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, GetSpellTargetLocation());
    int nSpellDC;
    //Get the first object in the are of effect
    object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF));
    while(GetIsObjectValid(oTarget))
    {
        //does the creature have a master.
        oMaster = GetMaster(oTarget);
        //Is that master valid and is he an enemy
        if((GetIsObjectValid(oMaster) && spellsIsTarget(oMaster,SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF )) || GetLocalInt(oTarget, "nDismissable") == 1 )
        //added zombo condition to above
        {
            //Is the creature a summoned associate
            if(GetAssociate(ASSOCIATE_TYPE_SUMMONED, oMaster) == oTarget ||
               GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oMaster) == oTarget ||
               GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oMaster) == oTarget
               || GetLocalInt(oTarget, "nDismissable") == 1 )     // Zombo dismissing addition
            {
                SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_DISMISSAL));
                //Determine correct save
                nSpellDC = GetSpellSaveDC() + 6;
                //Make SR and will save checks
                if (!MyResistSpell(OBJECT_SELF, oTarget) && !MySavingThrow(SAVING_THROW_WILL, oTarget, nSpellDC))
                {
                     //Apply the VFX and delay the destruction of the summoned monster so
                     //that the script and VFX can play.
                     ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
                     DestroyObject(oTarget, 0.5);
                }
            }
        }
        //Get next creature in the shape.
        oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF));
    }
}
[/hide]

KNOWN ISSUES:

Really the only big ones are:
- if the PC clicks "remove from party" from the radial, instead of using the release tool, the summoning pool will not change to reflect this.  A NWNX hook probably exists that can fix this. Clicking the player tool on self fixes this.
-Players cannot unsummon from radial anymore.   A player tool or /c command would be needed to destroy them manually. (Personally,  I like the idea of having undead linger unless physically destroyed)
#4
Bug Reports / Combat Dummies
October 12, 2019, 02:13:37 PM
The XP tick seems pretty hit and miss.  I've been wailing on one for close to 12 minutes w/ 2 apr and  gotten about 30 XP at level 5

Sometimes the ticks roll in from consecutive hits, others I'll go quite a few rounds without seeing xp at all.  I've messed around w/ trying to alternate dummies, dualwielding vs 1h, but it seems mostly random/irregular?

More of a suggestion, but They've also apparently got a TON of hp. I've easily done somewhere between 300-500 damage without destroying it in this time.  If this is meant to be a safer / less supply rewarding means for lowbies to level or recover levels..  It seems very unworth the time atm.
#5
Suggestions / Remove/Tweak Disarm from NPCS
October 11, 2019, 03:34:15 AM
Not the first time it's come up, but man. This is beyond frustrating when it happens. We seem to be getting more and more NPCS with this feat, and it's getting more and more frustrating when it happens.

Typically, the only mobs that have disarm are ones that spawn in huge groups. Once you lose your weapon, it tends to disappear in piles of corpses/lootbags, or be totally inaccessible because of collision models.  Occasionally, it can even glitch into the terrain if you're super unlucky and you'll need a DM to try and help you get your weapon back.    It messes up quickslots and spellslots alike if you have them, and god help you if you're a relic guardian and you lose your relic weapon. 

It's possible and the easiest solution is to make it so disarm from an NPC just puts it into your inventory, instead of the ground and this would be vastly preferred.

But this is not something that creates fun or interesting experiences on the server, unlike PC disarms which can be a huge "fuck you" but are somewhat manageable, and reasonably fair (most of the time) to deal with.
#6
Player Workshop / Regroup 2.0
October 10, 2019, 01:52:57 PM
Because regroup right now is... beyond useless for anything other than helping someone climb a cliff... I  reworked it.   DM's are free to play with the timing/VFX, but what this essentially does is cast a spell that will take just under 16 seconds to complete.

A massive, circular VFX will appear at the PC's chosen teleport location, and  nearby PCs will be able to step inside.  If they are non-hostile to the caster and remain stationary inside the circle... They are teleported to the caster's location after the spell's duration completes.

This allows you to bring allies from afar, from pre-set locations. Basically how teleport works, but in reverse.

[hide]

// Stage 1 : Creates AOE VFX, informing PC's of the teleporting
// Inform PCs that the teleport area is around them and they should move if they don't want to be zapped.
// If hostile to the caster, send a message saying they are aware of the telport but won't be grabbed
//
// Stage 2 : Similar warning, but play VFX indicating they're about to poof:
// Stage 3 : Poof the people, final VFX. LIGHT SHOW!
void PrepTarget(location lTarget, object oCaster, int nStage)
{
object oPC = GetFirstObjectInShape(SHAPE_SPHERE, 4.1, lTarget, FALSE);
effect ePrep = EffectVisualEffect(VFX_DUR_MAGIC_RESISTANCE);
effect ePrep2 = EffectVisualEffect(VFX_IMP_MAGIC_PROTECTION);
effect ePoof = EffectVisualEffect(VFX_IMP_UNSUMMON);

  while (GetIsObjectValid(oPC))
     {

        if (GetIsPC(oPC) == TRUE)
          {
            if (GetIsReactionTypeHostile(oCaster, oPC)== FALSE)
              {
                if (nStage == 1)
                 {
                 FloatingTextStringOnCreature("You feel a sense of nausea as conjurative energies flood the area around you... You sense something is trying to pull you to another place, and remaining still will allow them to do so!", oPC, FALSE);
                 }
                else if (nStage == 2)
                 {
                  FloatingTextStringOnCreature("Nausea washes over you growing increasingly intense as the conjurative energies do their work... you sense you will soon be somewhere else, unless you move!", oPC, FALSE);
                  ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePrep, oPC, 7.0);
                  ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePrep2, oPC);
                  SetLocalLocation(oPC, "lPreRegroup", GetLocation(oPC));
                  DelayCommand(12.0, DeleteLocalLocation(oPC, "lPreRegoup")); //cleanup
                 }
                else if (nStage == 3)
                 {
                    // Check to see if they've moved since stage 2. This will cancel the teleport.
                   if  (GetLocation(oPC) == GetLocalLocation(oPC, "lPreRegroup"))
                   {
                    ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, ePoof, GetLocation(oPC));
                    FloatingTextStringOnCreature("Nausea overwhelms you as you are conjured somewhere distant...", oPC, FALSE);
                    JumpToLocation(GetLocation(oCaster));
                   }
                   else if (GetLocation(oPC) != GetLocalLocation(oPC, "lPreRegroup") ) { FloatingTextStringOnCreature("The nausea subsides as your movement has disrupted the spell...", oPC, FALSE); }

                 }
              }

            else
              {
                // No other messaging needed. They just straight up resist if hostile.
                FloatingTextStringOnCreature("You feel a sense of nausea as conjurative energies flood the area... but make a conscious choice to resist the summoner's pull...", oPC, FALSE);

              }

          }
           oPC = GetNextObjectInShape( SHAPE_SPHERE, 4.1, lTarget, FALSE);
     }

}




void main()
{
object oPC = OBJECT_SELF;
object oTarget = GetSpellTargetObject();
location lTarget = GetSpellTargetLocation();  // Replace this with TELEPORT CONFIGURED LOCATION VARIABLE!!!


effect eVis1 = EffectVisualEffect(VFX_FNF_TIME_STOP);
effect eVis2 = EffectVisualEffect(VFX_FNF_IMPLOSION);

/*  COMPARE REGIONS, make sure lTarget is within same region! Also check for warded/teleport blocking!
   if (Region != lTargetRegion) || (region = warded)
     {
      SendMessageToPC(oPC, "The location you attempt to reach is beyond your abilities... nothing happens.");
      return;
     }
*/


/*Lock the caster into a "casting" animation for the duration here. Throw in a concentration script similar to teleport? Not going to re-invent the wheel here.
SetCommandable(FALSE)
Playanimation, etc.
CheckConcentration over duration
SetCommandable(True)
*/

ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis1, lTarget);

PrepTarget(lTarget, oPC, 1);
DelayCommand(4.0, ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis1, lTarget));
DelayCommand(6.0, PrepTarget(lTarget, oPC, 2));  // give warning, grab location to see if they've moved...
DelayCommand(8.0,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis1, lTarget));
DelayCommand(12.0,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis1, lTarget));
DelayCommand(12.0, PrepTarget(lTarget, oPC, 2)); // second stage2, just to give people more of a window/confirm movement
DelayCommand(15.0, ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis2, lTarget));
DelayCommand(15.8, PrepTarget(lTarget, oPC, 3));  // port the targets
}

[/hide]
#7
As topic.

Dying can be pretty rough, and I'm not the only player who succumbs to 'death spirals' where you die using most of your supplies on a harder quest, and then die a few more times on lowbies because you had no healing and shit left.

When you lose level 8+  and are setting on like 6-7k recovery XP, only to die again and lose all that, it can be pretty frustrating.  More so for the less powerquesty players who aren't constantly spamming quests.

If the whole point of recovery XP is to make the deaths less brutal, why not make this recovery XP cumulative?   Recovery XP is already deducted by earn XP from quests and mob kills, so it's not like anyone can really abuse it to level up.  At best, it would help regaining levels be less of a grind and slog, and people who are death prone are still going to die and lose XP.

Ultimately a minor, but huge QoL change. Please :)
#8
As topic : Crushed body on the left in the middle of all the lootable things, seems to be using bioware loot table. I looted a plain +1 dire mace from it, and trashed it.
#9
Suggestions / make regroup scrolls usable by everyone
August 11, 2019, 01:43:14 PM
As topic title.

This scroll is super useful, mostly for helping people get unstuck through the various terrain bugs and transition derps and so on.

Making it so everyone can use it means that non-mages can rescue mages, and so on.

QoL change, but super good IMO
#10
Suggestions / Bring back bundles for throwing weps
August 02, 2019, 10:52:49 PM
As topic states:

I wasn't able to find any NPCS that offer the bundles you used to be able to get in v4. It would be super nice to have this option to buy the bundles of darts/throwing axes.
#11
Screen Shots & Obituaries / Stuart Sparrowbroth
August 02, 2019, 03:48:36 PM
Short lived but had a blast.  Thanks to all the peoples who hung out with Stu.

Probably the only app pc I've ever had where I managed to check off every goal set in the app.  For the people who asked me what his deal was, here's his app

[hide]GSID:  Birb Stew

Playtimes :EST Evenings/Late nights

I am applying to play a relative of the Sparrowbroth brothers who run the Inns in 99, and be employed with the Spinning Groat.  I am also applying for the Arcane Mimic perk.

Stuart Sparrowbroth. He will be a Chaotic Neutral Human, Polytheistic follower of Pzatharun and the Nine faced.  Age would be between 19-30 (IDK Drayson/Silas' ages? Will discuss with a DM for appropriate age if approved)

Background:

A Nephew of the Sparrowbroths, he was always fond of Drayson and the chaotic environs of the Spinning Groat and those who'd gamble to win or lose their fortunes there. This love of gamblers and their ways cemented his faith to the chaotic small gods. Rather than prayers and words to show his devotion, he revels in getting others to gamble over trivial and dire matters alike to put themselves at the mercy of such gods. His talent to absorb and copy magic leaves him with something of a rush, and he began to seek out stronger magics and casters much like an adrenaline junkie always seeker greater thrills. After a time spent running the rings with some ragtag peerage group and having little success, he decided to return to 99 and seek employment with his uncle, Drayson.


Goals:

Foremost, I'd like to be the event guy for the spinning groat. A brewing PC seems ideal for this because I can use profits to throw lots of little events with free entry and decent prize purses to incentivize impromptu fight nights without needing a DM, on top of bigger events. The peerage is a fairly quiet hub, since most of the PCs linger around ticker and the open door instead. I'd like to try and churn up more activity and get more people into the gambling side if I can. Maybe offer bonuses to the amounts people win playing the scripted games.

For brewing, I'll ask everyone if they want to roll 1d9 for the shot at cheaper/at cost potions for that batch, at the risk of paying more if they roll unfavorably. If they choose not to roll, I'll charge them a slightly higher base cost than other brewers.  Maybe pay Orzans or other bandits to rough up other brewers and get them to raise their prices as well so that mine are the best either way.

Mimic seems perfect for this kind of pure chaos concept. At dispensaries, I'd make sendings announcing the spinning groat will observe and enhance the spectactle by offering to provide magic to whoever comes to the statue of the king and rolls 1d9. Maybe just buff or debuff people at random, to help out an underdog if someone tries to solo or two man a fullbuffed group. Whatever makes the fight more spectacular to watch for everyone present.


FWIW* I don't intend on playing him as a melee crushbot, sequencing divine power, or questing/seaming all that much past level 8. [/hide]
#12
General Discussion / Looting: How do you do it?
July 24, 2019, 07:44:05 PM
Just a random point of curiosity for my EFU Brethren.

When you subdue another PC and it becomes a situation where you're taking their stuff..   How do you personally decide what to take, and/or how much to take? What do you consider before you do so?

Personally, I try and think about three big things


  • Intensity of the fight.  Was it close? Did we both use lots of supplies? If I completely dunk someone in a round or two, I never feel justified in taking a shitload from a person. Same if we both end up using a ton of supplies.

  • Do I even know the other PC?  Is it someone I've played with/against with my current PC?  If it's some total rando I've never seen before, I might take some gold and tell them to scram.

  • How much does the other person have when I /c search them?   If a PC is absolutely poor, has no gold and none of the 'good' potions, I feel like taking anything at all is just a dick move.   On the other hand, if they have dozens of each 'pvp potions' like haste and trinity, I feel like taking all of them is still a dick move.   As a general rule, if someone is loaded, I'll personally just ask them for half of their potion stack if I say *Rummages through the pack and takes some haste potions*   

But I do always wonder,  "did I take too much? Not enough?"   I try to never put someone in a position where they can't quest and get their shit back because I took all their supplies they need to survive and keep their levels.

What about you guys, what's your thought process when it comes to this?
#13
Suggestions / /c checkup
July 10, 2019, 07:27:30 PM
This command is nice and shows info about your PC you wouldn't otherwise see.

Could we expand it to also show perk related things?

Barbarians how much is left on their cooldown/how many exhaustion points?
Fighters and rogues, a prompt if they've used their ability that rest/how many uses left if the perk grants multiple?
Spells in each recall slot for mimics?
#14
Suggestions / Regroup spell
June 09, 2019, 07:39:02 PM
This spell as it is now, will teleport nearby allies to the caster.   This is a really cool concept, but the range is abysmal.   The range appears to be 'medium' which is about twice the range you can hear someone whispering.   So in practice this spell is essentially useless for anything except helping an encumbered person up a cliff or something.

It would be cool if we could specify which (willing) person we're trying to grab, over longer ranges.

Alternately, it would be amazing if we could use this spell to scoop people standing near a teleport location you've marked or a person you've set with a /c command, and bring them to you.  This would make the spell FAR cooler and more useful
#15
Suggestions / Cobbledog quest
June 04, 2019, 08:04:28 PM
This quest is a welcome increase in challenge compared to the other quest in the same ring.

The rewards are/seem to be much lower than that same, much easier quest though.   There's a lot more spawns that can crank some some pretty heavy damage when multiple of them roll 20's or crit.

The end of quest XP is also fairly light (I think less than the other quest in the same ring too?) for a fairly challenging quest as a 7 max.

I'd suggest either buffing up one (or both?) of the gold piles from medium to large, or  spacing out the spawns a little more so there isn't such huge damage clusters for lowbie pcs?
#16
Bug Reports / Old Gnoll Barricade
June 02, 2019, 08:32:39 AM
There seems to be some faction issues.

  Several of the gnoll spawns were hostile to each other well before we got in range.
The cave prowlers were hostile to the gnolls.
There was seemingly no XP 'tick' upon completion as is common with other explorables.
#17
Bug Reports / Tumble AC Penalty double dipping
May 28, 2019, 03:07:17 AM
When I leveled up to take 5 base ranks of tumble, my AC gets the normal -1 penalty (Staying the same as before I leveled instead of increasing) since my gear puts me at 3 tumble.

But when I equip/unequip anything, it seems to apply the penalty AGAIN and put me at -1 of what my AC should be without any tumble. Relogging fixes this until something is equipped.
#18
Is this really a necessary mechanic to have? Barbs used to have 1-3 rages per quest/fight depending on their level.  Now in most cases, they have one, MAYBE two if the party is having trouble or it's a longer, higher level quest.

Some of these furors are pretty damn strong. But with a MINIMUM of 5 minutes between uses (and realistically, it's going to be 10-13 minutes for all but the highest level and fully buffed barbmans, they're not really spammable. You're more likely to run out your rest timer than to use a second rage.

But even if you do... you're adding a stacking 1d10 minutes per rage you get? ...Why? What purpose does this extension serve, to an already prohibitively long cooldown?  I feel like this mechanic is completely unnecessary, but 10 minutes is complete and utter overkill.    If exhaustion absolutely NEEDS to exist, it should at most be 1 minute per point or something.



#19
Screen Shots & Obituaries / Ayath Quillborn
May 13, 2019, 05:53:27 AM


Just a wide eyed, impressionable youth learning to do magic. He met some friends, and lost a shitload of gold in the spinning groat well before his ill-fated gamble of death.


I'm garbage at wizards more than any other class, so I wanted to play an apprentice and hench for people who were good at it.

I actually learned a bunch Oocly about wizards, from people who found a way to turn that info into IC lessons. VERY COOL and much props and kudos to Stranger and Dhund.

#20
Suggestions / Tweak Drawing Schematics
May 08, 2019, 09:44:48 PM
Given that these systems are larely about spammy trial and error, it's nice that there's a way to try and make a schematic of your choice.

However, it's kind of disappointing that you can only try and make ONE of these every 24HR realtime.

I'd say the cooldown should be much shorter, but that tends to reward the no-life players and punish people who have jobs and such, because they can still only really get 1/day where a no-lifer could get like 3-4 if it was every 5 hours or so?

My suggestion is this:   Remove the chance at failure, and instead make it just give you  1d4 +1   (Maybe instead of +1, rogue level /3 or  tinker check /10 or something?)  Or maybe  just use the most recent "choice" for drawing schematics, and provide one at rest to pcs with maxed tinkering (or a total tinker check over X amount), similar to how some perks get traps, arrows, or shurikens.