It is currently Tue Sep 07, 2010 3:52 am

All times are UTC - 8 hours




Post new topic Reply to topic  [ 3 posts ] 
Author Message
 Post subject: How To Make A Custom Spell
PostPosted: Thu Jun 28, 2007 7:54 am 
Offline
Grandmaster Poster

Joined: Sat Aug 05, 2006 11:43 am
Posts: 185
I hope someone finds use in this. I spent alot of time working on them, though I am by no means an expert and I sure it will have some errors. Feel free to blugon me.

Code: Select all
   This is another one of my tutorials for POL emulator. I am working with the 95 version of POL. If you can make POL 97 work then you are probably not in need of this tutorial. On the other hand, for those beginning, since 95 is the easiest install and release I suggest you go with that one.

--- How To Make A Custom Spell ---

Step One:

1.   Navigate to your POL installation and open pkg\skills\spells.
2.   Find ‘spells.cfg’ and open it with your favorite text editor.
3.   Scroll all the way to the bottom.
4.   Insert this code between the lines, it is probably best if you hand type it for memory purposes.
_____________________________________________________________


Spell 70
{
   SpellId    70
   Name      Crimson Tide
   Script   crimsonTide
   Circle   8
   Animation   0x22
   PowerWords    Alchendor Manifest
   Val      10
}

Spell 170
{
   SpellId    170
   Name      Crimson Tide
   Script   crimsonTide
   Circle   8
   Animation    0x22
   PowerWords   Alchendor Manifest
   Reagent   bloodmoss
   Reagent   bloodmoss
   Reagent   bloodmoss
   Reagent    spidersilk
}

_____________________________________________________________








I will give a brief explanation of what we just did. First off the ‘spell 70 and 170’ is really simple. I figured the best place to start a new spell would be with 70, it leaves a safe gap from 64, which is the last registered spell. Also we use 170 because if you look above 64 also has 164 ect. This is to differ from spells and scrolls, one uses reagents the other does not.

SpellId      Follows the same procedure.
Name      Name of the spell.
Script      Script that is ran in the pkg\skills\spells folder.
Circle      Basically spell difficulty found in the config folder.
Animation    Animation the player performs when casting.
PowerWords   Words spoken over the players head when cast.
Val      Point value?
Reagent   Reagents used in the spells section.

Step Two:

1.   Next we head off to pkg\items\magic.
2.   Open itemdesc.cfg.
3.   Insert the code between the lines at the bottom of the document.

_____________________________________________________________
   
Item 0x5000
{
    Name           crimsontidescroll
    Desc           Crimson Tide Scroll
    Script         scroll
    Spellid        70
    Graphic     7981
    Color       1543
    VendorBuysFor  100
    VendorSellsFor 210
}

_____________________________________________________________

Item       All new items must have an id. Custom starts at 0x5000 - 0xFFFF
Name      Internal Name: .create crimsontidescroll
Desc      What the player sees when clicked once.
Script      The script the scroll runs when used.
Spellid      The spell id we setup earlier.
Graphic    The picture id refered to in UO.
Color       The hue of the object.
VendorBuysFor   How much the scroll sells for.
VendorSellsFor   How much the vendor sells it for.



Step Three:

   Now it is time to program the spell. Earlier we told the scripts that the spell was going to access crimsonTide. There is a reason for this. In the pkg\skills\spells folder you will find the names of many different spells. This is because they are the scripts that run when the spell is cast or a scroll is double clicked in game. So.

1.   Navigate to pkg\skills\spells folder.
2.   Make a new file called ‘crimsonTide.src’ this will be our source code.
3.   Insert the code in between the lines and save the file.

_____________________________________________________________

include "summon";
include "include/spellRestrictions";

program crimson_tide( parms )
  var circle := 8;
  var delivery := "indirect";
  var noto := "neutral";
  var result := maincast(parms, delivery, circle, noto, 61);
  if(result == 0)
    return;
  endif
  var caster := result[1];
  var cast_on := result[2];
  summon_creature( caster, 8, "summonedbloodelemental", cast_on );
endprogram

_____________________________________________________________

AHHH!!! May very well be the fist words out of your mouth. Let me explain what this spell does. It summons an elemental that we will create in a moment. I will very briefly explain the code from top to bottom. It is your job to learn the coding part, which a lot can be learned from studying this file and Racalac’s E-Script guide located in your DOCs folder. A good way to learn may be to study and compare this code.

1.   Include the summoning scripts.
2.   Include the folder scripts\include and the spellresctrictions.inc file.
3.   Setup our program.
4.   Declare our variables including spell circles.
5.   If we successfully cast the spell then summon the creature and set its master.
6.   End our custom program to save memory.

Step Four:

   If you check the code above you will see that we are summoning a ‘summonedbloodelemental’. If you ask, where do we put that, you asked the right question. This creature does not exist at the moment. So we need to create it. We are going to put it with the rest of the NPCs.

1.   Navigates to your CONFIG folder.
2.   Open ‘npcdesc.cfg’.
3.   Insert the code between the lines at the bottom of ‘npcdesc.cfg’.

_____________________________________________________________

NpcTemplate summonedbloodelemental
{
    Name                   a blood elemental
    script                 spellKillPCs
    ObjType                0x10
    Color                  37
    TrueColor              37
    Gender                 0
    STR                    615
    INT                    515
    DEX                    185
    HITS                   615
    MANA                   515
    STAM                   185
    MoveMode               L
    MagicResistance        100
    Tactics                100
    Wrestling              100
    Magery                 110
    evaluatingintelligence 100
    cast_pct               95
    num_casts              45
    spell                  magicArrow   5
    spell                  paralyze     5
    spell                  curse        5
    spell                  harm         5
    spell                  poison       5
    spell                  fireball     10
    spell                  lightning    10
    spell                  eBolt        10
    spell                  explosion    10
    spell                  fstrike      10
    spell                  meteorSwarm  10
    spell                  manaDrain    5
    spell                  manaVamp     10
    AttackSpeed            40
    AttackDamage           9d9
    AttackAttribute        Wrestling
    AttackHitSound         0x119
    AttackMissSound        0x239
    deathsound             0x11b
    damagedsound           0x11a
    idlesound1             0x117
    idlesound2             0x118
    Magicitemchance        100
    MagicAdjustment        2
    AR                     45
    lootgroup              68
    dstart                 10
    provoke                85
    corpseitm              blood
    corpseamt              1
    CProp  noloot          i1
    cprop  nocorpse        i1
    CProp  Karma           i-37
    CProp  Fame            i37
    CProp  Equipt          sbackpack
    AttackHitScript        :combat:wrestlingHitScript
    OpensDoors             1
}
_____________________________________________________________

This script pretty well speaks for itself, though; my favorite part is at the bottom. OpensDoors 1. This is great for people trying to run from it, it will open the door going after them.

Last Step:

   Navigate to your scripts folder and right click ecompile.exe then click make shortcut, drag that to your desktop or something. Then double click it after all files are saved. This will compile your .src scripts to something the server can read. Anytime you change .src scripts you need to compile if you change a .inc or .cfg there is no need to compile.

Tip: When testing scripts that you compiled there is no reason to restart the server, simple just type .unloadall. Now, go ingame and type .create crimsontidescroll.

Tip: To edit spell circle difficulty open, config\circles.cfg. :p

Happy spell spamming from your friendly druid.
By: Runtest


Please tell me if this helps anyone, or hurts them...


Top
 Profile  
 
 Post subject: Re: How To Make A Custom Spell
PostPosted: Tue Jul 13, 2010 8:23 am 
Offline
New User

Joined: Tue Jul 13, 2010 8:14 am
Posts: 1
thx for that tutorial. i just installed a full distro of .97 today and wanted to test your tut. after searching for the correct files, i saw that my scripts were a bit different. so i fit your script to the other spells and now i could create that scroll ingame and useing it, but after my animation he want to use a filename.ecl. how can i create this file? when i open other ecl files, i can just see a few words. i think this file is getting compiled somewhere?


Top
 Profile  
 
 Post subject: Re: How To Make A Custom Spell
PostPosted: Mon Jul 19, 2010 1:24 am 
Offline
New User

Joined: Thu Jun 24, 2010 4:25 am
Posts: 4
Location: Poland / Warsaw
you have to compile the file that handles the scroll.

line:
Script scroll


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 3 posts ] 

All times are UTC - 8 hours


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Style based on FI Subice by phpBBservice.nl