FORUM ARCHIVED

New to modding, want to know if some things can be done

Discussion in 'Modding' started by Xenotechie, Aug 11, 2013.

  1. Xenotechie

    Xenotechie Member

    I am planning on making a skill tree mod based around the idea that you have a bunch of teleportation based spells for both offensive and defensive purposes ,but as I am new to modding this game, or modding in general, I don't know if some of the ideas in my head can be actually executed. I checked the DredMod wiki and the spell XML files of the base game, but I am still not sure about these parts of my idea.

    First off, this is admittedly highly unlikely, but can you use a spell to return a character to his location x turns ago? Failing that, can you create a mine which serves as an "anchor", so to speak, for your character to return to by casting another spell?

    Also, can you somehow make a template spell deal damage equal to the character's melee damage? If you can't, is there anything that I could use similar to that idea?

    Finally, this one will be a bit hard to explain. In this base plan I have for the mod, I intend for the spells in the skill tree to have no mana cost or cooldown, but rather progresively worse debuffs for each use of them in a short timeframe, so, for example, using a spell will trigger a certain minor debuff, and if you use it again before the debuff expires, it gets replaced with a worse debuff, and that debuff can be replaced by an even worse debuff, and so on. Can you do that, and, if you can, can an effect that spawns a monster near the character be linked into that chain of debuffs?
     
  2. lccorp2

    lccorp2 Member

    1. See Chronomancy's Grandfather Clock Paradox.

    2. Use attack=1 in the spell's flags.

    3. See Arcanist's arcane blast. Summoning a hostile monster can be done with summonhostile.

    Code:
    <!-- For Arcane Blast -->
    
    
    <!-- Arcane Blast Buffs. -->
    
    <spell name="Minor Arcane Charging" type="self" icon="skills/wizard/spell_water9_32.png" wand="0">
        <anim sprite="sprites/sfx/mystic_hit/mystic_hit" frames="5" framerate="80" sfx="magic" />
        <buff useTimer="1" self="1" allowstacking="0" time="2" icon="skills/wizard/spell_water9_64.png" smallicon="skills/wizard/spell_water9_32.png">
            <halo name="sprites/sfx/water_loop/water_loop" first="0" num="6" frameRate="100" />
            <primarybuff id="5" amount="-10"/> <!-- Savvy -->
            <secondarybuff id="3" amount="3"/> <!-- Mpow -->
            <secondarybuff id="5" amount="5"/> <!-- haywire, to make up for loss from savvy -->
        </buff>
        <description text="I'ma charging my mana! Your spells are more potent, but cost much more to cast!"/>
    </spell>
    
    <spell name="Arcane Charging" type="self" icon="skills/wizard/spell_water9_32.png" wand="0">
        <anim sprite="sprites/sfx/mystic_hit/mystic_hit" frames="5" framerate="80" sfx="magic" />
        <buff useTimer="1" self="1" allowstacking="0" time="2" icon="skills/wizard/spell_water4_64.png" smallicon="skills/wizard/spell_water4_32.png">
            <halo name="sprites/sfx/water_loop/water_loop" first="0" num="6" frameRate="100" />
            <primarybuff id="5" amount="-30"/> <!-- Savvy -->
            <secondarybuff id="3" amount="7"/> <!-- Mpow -->
            <secondarybuff id="5" amount="15"/> <!-- haywire, to make up for loss from savvy -->
        </buff>
        <effect type="removebuffbyname" name="Minor Arcane Charging" amount="0" self="1" />
        <description text="I'ma charging my mana! Your spells are more potent, but cost much more to cast!"/>
    </spell>
    
    <spell name="Major Arcane Charging" type="self" icon="skills/wizard/spell_water9_32.png" wand="0">
        <anim sprite="sprites/sfx/mystic_hit/mystic_hit" frames="5" framerate="80" sfx="magic" />
        <buff useTimer="1" self="1" allowstacking="0" time="2" icon="skills/wizard/spell_water8_64.png" smallicon="skills/wizard/spell_water8_32.png">
            <halo name="sprites/sfx/water_loop/water_loop" first="0" num="6" frameRate="100" />
            <primarybuff id="5" amount="-60"/> <!-- Savvy -->
            <secondarybuff id="3" amount="12"/> <!-- Mpow -->
            <secondarybuff id="5" amount="30"/> <!-- haywire, to make up for loss from savvy -->
        </buff>
        <effect type="removebuffbyname" name="Arcane Charging" amount="0" self="1" />
        <description text="I'ma charging my mana! Your spells are more potent, but cost much more to cast!"/>
    </spell>
    
    <!-- AB checks -->
    
    <spell name="Check for Major" type="target">
        <effect type="trigger" requirebuffonnottrigger="1" requirebuffonnottriggername="Major Arcane Charging" spell="Minor Arcane Damage" />
        <anim sprite="sprites/sfx/null" frames="2" framerate="80" />
    </spell>
    
    <spell name="Check for Arcane" type="target">
        <effect type="trigger" requirebuffonnottrigger="1" requirebuffonnottriggername="Arcane Charging" spell="Check for Major" />
        <anim sprite="sprites/sfx/null" frames="2" framerate="80" />
    </spell>
    
    <spell name="Check for Minor" type="target">
        <effect type="trigger" requirebuffonnottrigger="1" requirebuffonnottriggername="Minor Arcane Charging" spell="Check for Arcane" />
        <anim sprite="sprites/sfx/null" frames="2" framerate="80" />
    </spell>
    
    <!-- AB explosions -->
    
    <spell name="Arcane Explosion" type="template" templateID="9" anchored="0" affectscorpses="0" >
        <effect type="damage" aethereal="2" aetherealF="0.2" blasting="2" blastingF="0.1" transmutative="2" transmutativeF="0.1" />
        <anim sprite="sprites/sfx/null" frames="2" framerate="100" sfx="aetherial" />
        <impact sprite="sprites/sfx/mystic_hit/mystic_hit" frames="5" framerate="80" sfx="aetherial" centerEffect="0"/>
        <description text="Does what it says." />
      </spell>
    
    <spell name="Major Arcane Explosion" type="template" templateID="20" anchored="0" affectscorpses="0" >
        <effect type="damage" aethereal="2" aetherealF="0.3" blasting="2" blastingF="0.2" transmutative="2" transmutativeF="0.2" />
        <anim sprite="sprites/sfx/null" frames="2" framerate="100" sfx="aetherial" />
        <impact sprite="sprites/sfx/mystic_hit/mystic_hit" frames="5" framerate="80" sfx="aetherial" centerEffect="0"/>
        <description text="Does what it says." />
      </spell>
    
    <spell name="Supreme Arcane Explosion" type="template" templateID="12" anchored="0" affectscorpses="0" >
        <effect type="damage" aethereal="2" aetherealF="0.4" blasting="2" blastingF="0.3" transmutative="2" transmutativeF="0.3" />
        <effect type="removebuffbyname" name="Major Arcane Charging" amount="0" self="1" />
        <anim sprite="sprites/sfx/null" frames="2" framerate="100" sfx="aetherial" />
        <impact sprite="sprites/sfx/mystic_hit/mystic_hit" frames="5" framerate="80" sfx="aetherial" centerEffect="0"/>
        <description text="Does what it says." />
      </spell>
    
    <!-- Arcane Blast Damages -->
    
    <spell name="Minor Arcane Damage" type="target" >
        <effect type="damage" aethereal="2" aetherealF="0.2" blasting="2" blastingF="0.2" transmutative="2" transmutativeF="0.1" />
        <impact sprite="sprites/sfx/mystic_hit/mystic_hit" frames="5" framerate="80" centerEffect="0"/>
        <effect type="trigger" spell="Minor Arcane Charging" amount="1" />
        <description text="Testing, testing."/>
      </spell>
    
    <spell name="Arcane Damage" type="target" >
        <effect type="damage" aethereal="2" aetherealF="0.4" blasting="2" blastingF="0.4" transmutative="2" transmutativeF="0.2" />
        <effect type="trigger" spell="Arcane Explosion" />
        <effect type="trigger" spell="Arcane Charging" amount="1" />
        <description text="Testing, testing."/>
      </spell>
    
    <spell name="Major Arcane Damage" type="target" >
        <effect type="damage" aethereal="2" aetherealF="0.6" blasting="2" blastingF="0.6" transmutative="2" transmutativeF="0.3" />
        <effect type="trigger" spell="Major Arcane Charging" amount="1" />
        <effect type="trigger" spell="Major Arcane Explosion" />
        <description text="Testing, testing."/>
      </spell>
    
    <spell name="Supreme Arcane Damage" type="target" >
        <effect type="damage" aethereal="2" aetherealF="0.8" blasting="2" blastingF="0.8" transmutative="2" transmutativeF="0.4" />
        <effect type="trigger" spell="Supreme Arcane Explosion" />
        <description text="Testing, testing."/>
      </spell>
    
    <!-- Actual AB Spell. -->
    
    <spell name="Arcane Blast" type="target" icon="skills/wizard/spell_water9_32.png" >
        <requirements mp="30" savvyBonus="0.4" mincost="10" />
        <effect type="trigger" requirebuffontrigger="1" requirebuffontriggername="Minor Arcane Charging" spell="Arcane Damage" />
        <effect type="trigger" requirebuffontrigger="1" requirebuffontriggername="Arcane Charging" spell="Major Arcane Damage" />
        <effect type="trigger" requirebuffontrigger="1" requirebuffontriggername="Major Arcane Charging" spell="Supreme Arcane Damage" />
        <effect type="trigger" requirebuffonnottrigger="1" requirebuffonnottriggername="Minor Arcane Charging" spell="Check for Minor" />
        <anim sprite="sprites/sfx/blastA/blastA" frames="4" framerate="70" centerEffect="1" sfx="explosion"/>
        <description text="Blast your enemy with raw mana and charge yourself with it at the same time!"/>
      </spell>
     
    Kazeto, mining and Xenotechie like this.
  3. Xenotechie

    Xenotechie Member

    Thank you very much. This post has been very useful, and I started working on the mod. It might not see the light of the steam workshop, and, even if it does, it won't be anywhere near the level of chronomancy, but I probably wouldn't have gotten anywhere with my idea as it is without your help.
     
  4. mining

    mining Member

    Almost everything is doable if you loosen up your sanity a little.
     
    Kazeto, Daynab and Syphonix like this.
  5. Bohandas

    Bohandas Member

    Is that how Clockwork Reflexes and Clockwork Threshing work? I remember looking at the code and trying to figure out what kind of crazy hoodoo had been done to make a spell that (IIRC) appeared to consist only of animations actually do something.
     
    Kazeto likes this.
  6. Kazeto

    Kazeto Member

    Yes, it's how it actually works.
     
  7. Bohandas

    Bohandas Member

    Actually, I just looked at the code again and while Puissant Touch has attack="1", Clockwork Reflexes and Threshing don't appear to.
     
  8. Kazeto

    Kazeto Member

    On the other hand, they "don't appear to" have anything at all.

    And because of that they got the 'attack="1"' thing by default. It's a bit weird and I don't fault you for getting a little confused there. There was a time when I had a "what exactly is that supposed to be doing" moment too, before I reminded myself that some things can have "conditional" default values.
     
  9. Syphonix

    Syphonix Member

    The skill that calls on Clockwork Reflexes uses a counterBuff trigger. It's likely that the following spell assumes it to be attack="1". Though, I think this is exactly what Kazeto is saying. So, yeah.
     
    Kazeto likes this.