Jump to content

HearthStone Modification (CoolDown)


Guest jpmythic

Recommended Posts

I have searched all three forums ( Here/SD2/UDB ) and have seen alot of things about the

issue with trying to change the HearthStone Cooldown period, Lots of suggestions, but none worked.

Now I have looked at it and played with and thought this should do it, but it doesn't work either.

I suspect most likely due to wrong settings in this Change...

I set this up in CharacterHandler.cpp during the Character Login...

      //Mythic HearthStone Mod
   int32 hearth_mod = 3600000;
   switch( vip_level )
   {
       case 0:        hearth_mod = hearth_mod * 0.5;    break;
       case 1:        hearth_mod = hearth_mod * 0.4;    break;
       case 2:        hearth_mod = hearth_mod * 0.3;    break;
       case 3:        hearth_mod = hearth_mod * 0.2;    break;
       case 4:        hearth_mod = hearth_mod * 0.1;    break;
       default:    hearth_mod = hearth_mod * 0.05;    break;
   }

   SpellModifier *mod = new SpellModifier;
   mod->op = SPELLMOD_COOLDOWN;
   mod->value = hearth_mod;
   mod->type = SPELLMOD_FLAT;
   mod->spellId = 8690;
   mod->effectId = SPELL_EFFECT_DUMMY;
   mod->lastAffected = NULL;
   mod->mask = 0x001000000000LL;
   mod->charges = 0;
   pCurrChar->AddSpellMod(mod, true);

  .....
  if(pCurrChar->isGameMaster())
       SendNotification(LANG_GM_ON);

And this has no effect...

I suspect perhaps I need to change either/both the values for:

[ mod->effectId / mod->mask / mod->charges ]

The problem is, there so little documentation for these values...

This idea above came from looking at what it is supposed to do just like

Items worn (weapons/armor/rings) and Talents do modifications to Cooldowns and Cast time

I have also tried this in Spell.cpp

with the latest settings I am trying next:

void Spell::SendSpellCooldown()
{
      .............
      // prevent 0 cooldowns set by another way
      if (rec <= 0 && catrec <= 0 && (cat == 76 || cat == 351))
         rec = _player->GetAttackTime(RANGED_ATTACK);
      ...

      //Mythic HearthStone Mod
   //Mythic DEBUG Vip Mods
   //Adjust by Vip Level 
   if ( m_spellInfo->Id == 8690 ) //&& _player->isVip() )    //(HearthStone) Spell only Modified here
   {
       //Mythic DEBUG Msg
       //sLog.outError("HearthStone check ocuring..>");
       rec = 3600000;    //Default 60 Mins
       switch (_player->charfdb_level)    //Vip Level
       {
           case 0:        rec = rec * 0.5;    break;
           case 1:        rec = rec * 0.4;    break;
           case 2:        rec = rec * 0.3;    break;
           case 3:        rec = rec * 0.2;    break;
           case 4:        rec = rec * 0.1;    break;
           default:            rec = rec * 0.05;    break;
       }
       _player->AddSpellCooldown(m_spellInfo->Id, SPELLMOD_COOLDOWN, rec);
       return;
   }

(EDIT)

Alrite, I just tried the Above again with No Effect...

And yes, I know about changing the SpellCooldown in the Database for Item_Templates..

That of Course has no Effect except to change the Description for the TImeout Period, No actual change to CoolDown period itself.

And I clear my Game Cache before attempting the Changes...

(end Edit)

Seems like something is Being Locked down in the CLient,

My next step is a Modified script that will be attached to the Hearthstone

and use a Dummy Spell for On_Use instead of the SpellId 8690 (casts hearthstone).

Any Suggestiosn Or Ideas with what I have tried?

Currently using:

Linux Debian

Mangos Ver 6918

SD2 Ver 803

Acid 0.0.5

UDB

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use