//****************************************************************************
// SPHERE by : Menasoft 1997-2003
// www.sphereserver.com
// All SPHERE script files and formats are copyright Menasoft & Partners.
// This file may be freely edited for personal use, but may not be distributed
// in whole or in part, in any format without express written permission from
// Menasoft & Partners. All donations and contributions
// become the property of Menasoft & Partners.
//****************************************************************************
///////////////////////////////////////////////////////////////
//////// General Information
///////////////////////////////////////////////////////////////
[SPHERE]
Agree=1
// Name of your Sphere shard
ServName=xXxXxX
// The IP of your server, this will be 127.0.0.1 almost always
ServIP=127.0.0.1
// The port of your server, this is 2593 by default
ServPort=2593
// Admin&?s contact email
[email protected]
// Web page for this server
URL=www.myshard.com
// GMT offset, from -12 to +12 [London=0, EST=5, etc]
TimeZone=0
// Official staff language
Lang=English
// Start this as a system service on Win2000, XP, NT
NTService=0
// MySql configuration.
//MYSQL=0
//MySqlHost=
//MySqlUser=
//MySqlPassword=
//MySqlDatabase=
///////////////////////////////////////////////////////////////
//////// File Locations
///////////////////////////////////////////////////////////////
// Directory where spheretables.scp is located, from there we will
// load any additional scripts
ScpFiles=scripts/
// Where your sphereworld.scp and spherechars.scp are located
WorldSave=save/
// Where your sphereaccu.scp and sphereacct.scp is located
AcctFiles=accounts/
// Where your UO installation is located. This need: map0.mul, statics0.mul,
// staidx0.mul, multi.mul, multi.idx, hues.mul, tiledata.mul.
// Optional files: verdata.mul, mapX.mul/staticsX.mul/staidxX.mul for higher
// maps support (Malas, etc).
//
// Note that if not set, sphere will scan windows registry to auto-detect it
//MulFiles=mul/
// Where your log files will be saved by sphere
Log=logs/
// To activate ML-sized map #0 uncomment the next line (don&?t forget to uncomment
// sphere_map0_ml.scp and sphere_map_points0_ml.scp in spheretables.scp if you want
// to use the default areas)
//MAP0=7168,4096,-1,-1
// To activate ML-sized map #1 uncomment the next line
//MAP1=7168,4096,-1,-1
// To enable the use of MapDif*.mul and StaDif*.mul files, set this to 1.
USEMAPDIFFS=0
///////////////////////////////////////////////////////////////
//////// World Save Information
///////////////////////////////////////////////////////////////
// How often for Sphere to save your world (minutes)
SavePeriod=20
// How many backup levels to keep. Each level means 7 backups done for it.
// So, 10*7 = 70 backup saves will be storied.
BackupLevels=10
// On would save in the background quietly over a longer period of time, and not interrupt the game
// Off would notify "World save has been initiated" and save faster, but pause the game momentarily
SaveBackground=0
///////////////////////////////////////////////////////////////
//////// Account Management
///////////////////////////////////////////////////////////////
//Code for servers account application process
// 0=Closed, // Closed. Not accepting more.
// 2=Free, // Anyone can just log in and create a full account.
// 3=GuestAuto, // You get to be a guest and are automatically sent email with u&?re new password.
// 4=GuestTrial, // You get to be a guest til u&?re accepted for full by an Admin.
// 6=Unspecified, // Not specified.
// To enable auto account you must set this to 2
AccApp=2
// Store password hashed with MD5
Md5Passwords=0
// local ip is assumed to be the admin
LocalIPAdmin=1
// Number of chars allowed per account
MaxCharsPerAccount=5
// Min time for a char to exist before delete allowed (in seconds)
MinCharDeleteTime=3*24*60
// Max number of Guest accounts allowed
GuestsMax=0
///////////////////////////////////////////////////////////////
//////// Client Management
///////////////////////////////////////////////////////////////
// What client protocol version used
// Comment out the ClientVersion line to allow any client that is supported.
//ClientVersion=2.0.3
// Set this to 0 to allow login to encrypted clients
UseCrypt=1
// Set this to 1 to allow login to unencrypted clients
UseNoCrypt=0
// Maximum total open connections to server
ClientMax=256
// Maximum open connections to server per IP
ClientMaxIP=16
// Maximum total (not-in-game) connections to server
ConnectingMax=32
// Maximum total simultaneous (not-in-game) connections to server per IP
ConnectingMaxIp=8
// How long logged out clients linger in seconds
ClientLinger=15
// Walk limiting code: buffer size (in tenths of second)
WalkBuffer=75
// Walk limiting code: regen speed (%)
WalkRegen=25
// Only commands issued by this plevel and higher will be logged
CommandLog=0
// Prefix for ingame commands
CommandPrefix=.
// Function to call if client is executing a command to override the default.
//CommandTrigger=f_oncommand
// Use the built in http server
// 0 - disable http server and webpage generation
// 1 - disable http server and enable webpage generation
// 2 - enable http server and webpage generation (default)
UseHttp=2
// Use the OSI AuthID to avoid possible hijack to game server.
UseAuthID=0
// Default setting for all accounts specifying default resdisp.
//AutoResDisp=1
// Default setting for new accounts specifying default priv level
//AutoPrivFlags=010
///////////////////////////////////////////////////////////////
//////// Game Mechanics
///////////////////////////////////////////////////////////////
// Do not allow entering under roof being on horse?
MountHeight=0
// Archery does not work if too close (0 = not checked)
ArcheryMinDist=2
// Maximum Distance for Archery
ArcheryMaxDist=15
// Speed scale factor for weapons
SpeedScaleFactor=15000
// This is the percent of max weight at which stamina is lost half the time
// (200 = no effect)
StaminaLossAtWeight=150
// Weight penalty for running +N% of max carry weight (0 = no effect)
RunningPenalty=50
// Show people joining/leaving the server. 0 disables, 2 enables staff only.
ArriveDepartMsg=1
// Are house and boat keys newbied automatically
AutoNewbieKeys=1
// Maximum number of items allowed in bank
BankMaxItems=1000
// Maximum weight in stones allowed in bank
BankMaxWeight=1000
// If 1 vendors will take gold only from backpack
PayFromPackOnly=0
// Disable weather effects?
NoWeather=1
// Default light level in dungeons
DungeonLight=27
// Day light level 0-30
LightDay=0
// Night light level 0-30
LightNight=25
// Allow manual sector light override?
//AllowLightOverride=1
// Wool Regen Time (in minutes)
WoolGrowthTime=30
// Suppress player speech with 75% of capital letters
SuppressCapitals=0
// Extra combat flags to control the fight (default:0, 0.55i compatible)
// COMBAT_NODIRCHANGE 00001 // Not rotate player when fighting (like was in 0.51a)
// COMBAT_FACECOMBAT 00002 // Allow faced combat only (recommended)
// COMBAT_PREHIT 00004 // allow prehit for close combat. first hit is instant (delay 0.1sec)
// COMBAT_USE_RESISTANCE 00008 // use character props RES* against oldfashioned damage types
// COMBAT_SPECIALDAMAGE 00010 // use character tags TAG.*DAMAGE to apply additional damage
// COMBAT_DCLICKSELF_UNMOUNTS 00020 // unmount horse when dclicking self while in warmode
// COMBAT_ALLOWHITFROMSHIP 00040 // Allow attacking opponents from ships
// COMBAT_OSIDAMAGEMOD 00080 // modify weapon damage OSI-style (taking anatomy, tactics, lumberjacking into account)
// COMBAT_ARCHERYCANMOVE 00100 // firing bow while moving
//CombatFlags=0
// Extra magic flags to control magic/magery behaviour (default:0, 0.55i compatible)
// MAGICF_NODIRCHANGE = 0x0000001 // Not rotate player when casting/targeting
// MAGICF_PRECAST = 0x0000002 // Precasting
// MAGICF_IGNOREAR = 0x0000004 // Magic damage ignore ar
// MAGICF_CANHARMSELF = 0x0000008 // Magic can do damage on self
// MAGICF_STACKSTATS = 0x0000010 // Different stat spells don&?t cancel each other out
//MagicFlags=0
// Zero point for sextant coordinates counting
//ZeroPoint=1323,1624,0
///////////////////////////////////////////////////////////////
//////// NPC/Item/Player Management
///////////////////////////////////////////////////////////////
// Distance in tiles before an NPC that&?s wandered too far from it&?s home will teleport back
LostNPCTeleport=50
// Wether PCs get a resurrection robe when they get resurrected.
NoResRobe=0
// Time for a NPC corpse to decay mins
CorpseNPCDecay=10
// Time for a playercorpse to decay mins
CorpsePlayerDecay=15
// Base decay time in minutes for items
DecayTimer=1
// Put [NPC] tags over chars
CharTags=0
// Flip dropped items
FlipDroppedItems=0
// Monsters run when scared of death
MonsterFear=0
// Monsters may fight each other
MonsterFight=0
// Percent setting of the all NPC move rate, default 100
MoveRate=100
// Do players receive sounds
GenericSounds=1
// Max number of items to sell to one person at once
VendorMaxSell=255
// Max level npc trainers can go
NPCTrainMax=300
// Percent of own ability npcs can train to
NPCTrainPercent=30
// Max level of skill trainable on dummies, archery butte ecc..
SkillPracticeMax=300
// Max skill player&?s will start with on skills they haven&?t chosen during
// character creation
MaxBaseSkill=200
// If set to 0, the MaxBaseSkill will only apply to skills that the client
// can see in their menu (based on Feature* settings, ResDisp and Client
// Version). If this is set to 1 then players to start with all the skills
// that have been defined.
InitHiddenSkills=0
// Time in seconds for hitpoint regeneration
Regen0=40
// Time in seconds for mana regeneration
Regen1=20
// Time in seconds for stamina regeneration
Regen2=10
// Time in minutes for food regeneration
// 1*60*24 = 1 day of real life time
Regen3=1*60*24
// Speech block associated to players
SpeechSelf=spk_player
// Speech block associated to pets
SpeechPet=spk_pet
//Events related to all NPCs
//EventsPet=your_event
//Events related to all players
//EventsPlayer=your_event
//Events related to all regions
//EventsRegion=your_event
// When player skills/stats goes this times more than skillclass allowed, drop
// them to skillclass level. Setting this to 0 disables the action.
OverSkillMultiply=2
// NPC AI settings
// NPC_AI_PATH 0001 NPC pathfinding
// NPC_AI_FOOD 0002 NPC food search (objects + grass)
// NPC_AI_EXTRA 0004 NPC magics, etc
// NPC_AI_ALWAYSINT 0008 Always be as smart as possible with pathfinding
// NPC_AI_INTFOOD 0010 NPC food search (more intelligent and trusworthy)
// NPC_AI_COMBAT 0040 Look for friends in combat
// NPC_AI_VEND_TIME 0080 vendors closing their shops at nighttime
// NPC_AI_LOOTING 0100 loot corpses an the way
// NPC_AI_MOVEOBSTACLES 0200 if moveable items block my way, try to move them
//NPCAI=0
///////////////////////////////////////////////////////////////
//////// Crime/Murder/Karma/Fame/Guard Settings
///////////////////////////////////////////////////////////////
// Karma when player goes from good to neutral (from -10000 to 10000)
PlayerNeutral=-2000
// How many minutes are criminals flagged for
CriminalTimer=3
// Times a player can snoop before becoming a criminal
SnoopCriminal=20
// Seconds time to decay a murder count (default 8*60*60 is 8 hours)
MurderDecayTime=8*60*60
// Amount of murders before we get title
MurderMinCount=1
// Looting or carving a blue player is a crime
LootingIsaCrime=1
// Flag players criminal for helping criminals?
HelpingCriminalsIsaCrime=1
// How long do guards linger about in minutes
GuardLinger=3
// Will guards kill instantly or follow normal combat rules
GuardsInstantKill=1
// Limits the MAXHITS/MAXMANA/MAXSTAM changes
// STAT_FLAG_NORMAL 0x00 // MAX* status allowed (default)
// STAT_FLAG_DENYMAX 0x01 // MAX* denied
// STAT_FLAG_DENYMAXP 0x02 // .. for players
// STAT_FLAG_DENYMAXN 0x04 // .. for npcs
StatsFlags=0
// Uses the new LoS algorithm
// ADVANCEDLOS_DISABLED 0x00 // Disabled, use the old method
// ADVANCEDLOS_PLAYER 0x01 // Enabled only for players
// ADVANCEDLOS_NPC 0x02 // Enabled only for NPCs
AdvancedLos=0
// Default color settings for characters (name, speech)
//ColorNotoGood=063 // blue
//ColorNotoGuildSame=044 // green
//ColorNotoCriminal=03b2 // grey (criminal)
//ColorNotoNeutral=03b2 // grey (can be attacked)
//ColorNotoEvil=026 // red
//ColorNotoGuildWar=02b // orange (enemy guild)
//ColorNotoDefault=03b2 // grey (if not any other)
///////////////////////////////////////////////////////////////
//////// Server Mechanics
///////////////////////////////////////////////////////////////
// Experimental flags
// Flags for options that affect server behaviour and which might affect compatibility
// See the revisions.txt file for more details on this
// EF_DiagonalWalkCheck = 00000001
// EF_UNICODE = 00000002 // No on Linux
// EF_New_Triggers = 00000008
// EF_Intrinsic_Locals = 00000020
// EF_Item_Strict_Comparison = 00000040
// EF_NewPositionChecks = 00000080 // Do not set while server is running !!!
// EF_WalkCheck = 00000100
// EF_AllowTelnetPacketFilter = 00000200 // Enables packet filtering for telnet connections as well
// EF_Script_Profiler = 00000400
// EF_Size_Optimise = 00000800
// EF_Minimize_Triggers = 00001000 // Minimize trigger calls (use only 0.51 triggers)
// EF_Specific = 01000000 // Specific behaviour, not completly tested
// EF_DamageTools = 00002000 // damage tools (and fire @damage on them) while mining or lumberjacking
// EF_UsePingServer = 00008000 // Enable the experimental Ping Server (for showing pings on the server list, uses UDP port 12000)
Experimental=00000
// Option flags
// Flags for options that affect server behaviour but not compatibility
// See the revisions.txt file for more details on this
// OF_Command_Sysmsgs = 00000008 //Shows status of hearall, allshow, allmove... commands after toggling them
// OF_OSIMultiSight = 00000020
// OF_Items_AutoName = 00000040
// OF_FileCommands = 00000080
// OF_NoItemNaming = 00000100
// OF_NoHouseMuteSpeech = 00000200
// OF_Flood_Protection = 00001000
// OF_Buffs = 00002000
// OF_NoPrefix = 00004000 // Add prefix "A" and "An" to itemnames or not
// OF_DyeType = 00008000 // if set allows using i_dye on all t_dye_vat instead of only i_dye_tub
// OF_DrinkIsFood = 00010000 // type T_DRINK will increase FOOD lvl like T_FOOD
// OF_Specific = 01000000 // Specific behaviour, not completly tested
OptionFlags=08|0200
// FeatureT2A, used to control T2A expansion features ( default 03 )
// FEATURE_T2A_UPDATE 01 // Monster and Lost lands
// FEATURE_T2A_CHAT 02 // In game chat
FeatureT2A = 03
// FeatureLBR, used to control LBR expansion features ( default 0 )
// FEATURE_LBR_UPDATE 01 // Lbr Monsters
// FEATURE_LBR_SOUND 02 // MP3 instead of MIDI
FeatureLBR = 0
// FeatureAOS, used to control AOS expansion features ( default 0 )
// FEATURE_AOS_UPDATE_A 0x01 // AOS Monsters, Map
// FEATURE_AOS_UPDATE_B 0x02 // Tooltip, Fightbook, Necro/paladin on creation, Single/Six char selection screen, Skills, Newer spellbook support
// FEATURE_AOS_POPUP 0x04 // PopUp Menus
// FEATURE_AOS_DAMAGE 0x08
FeatureAOS = 0
// FeatureSE, used to control SE expansion features ( default 0 )
// FEATURE_SE_UPDATE 01 // Basic SE features
// FEATURE_SE_NINJASAM 02 // Ninja and Samurai
FeatureSE = 0
// FeatureML, used to control ML expansion features ( default 0 )
// FEATURE_ML_UPDATE 01 // Basic ML features
FeatureML = 0
// In game effects to turn on and off
// Messages echoed to the server console while in debug mode
// DEBUGF_NPC_EMOTE = 00001
// DEBUGF_ADVANCE_STATS = 00002
// DEBUGF_WALKCODES = 00080 // try the new walk code checking stuff
// DEBUGF_EXP = 00200 // experience gain/loss
// DEBUGF_LEVEL = 00400 // experience level changes
// DEBUGF_SCRIPTS = 00800 // debug flag for scripts
// DEBUGF_LOS = 01000 // debug flag for AdvancedLOS
// DEBUGF_WALK = 02000 // debug flag for new walking check stuff
//DebugFlags=00
// Allow rapid Buy/Sell through Buy/Sell agent
AllowBuySellAgent=0
// Console Hears all that is said on the server
HearAll=1
// Secure mode attempts to ignore errors, protect from accidently shutdowns
Secure=1
// Value from 1 to 32, set sectors inactive when unused to conserve resources
SectorSleep=10
// Disconnect inactive socket in x min
DeadSocketTime=5
// Always force a full garbage collection on save
ForceGarbageCollect=1
// Time before restarting when server appears hung (in seconds)
FreezeRestartTime=60
// Length of the game world minute in real world in seconds
GameMinuteLength=60
// Bit Mask of the subjects you want to log when logging is on
// LOGM_ACCOUNTS 0x00080
// LOGM_SAVE 0x00200 // world save status.
// LOGM_CLIENTS_LOG 0x00400 // all clients as they log in and out.
// LOGM_GM_PAGE 0x00800 // player gm pages.
// LOGM_PLAYER_SPEAK 0x01000 // All that the players say.
// LOGM_GM_CMDS 0x02000 // Log all GM commands.
// LOGM_CHEAT 0x04000 // Probably an exploit !
// LOGM_KILLS 0x08000 // Log player combat results.
// LOGM_HTTP 0x10000
// 01ffff log everything
LogMask=01ec80
// Amount of time to keep map data cached in sec
MapCacheTime=120
// Max NPC chars for a sector to prevent lag
MaxComplexity=32
// Amount of items in one tile so start showing "too many items here"
MaxItemComplexity=25
// Amount of items in one sector to start showing "x items too complex"
MaxSectorComplexity=1024
// Limit the number of cycles the while/for loop can proceed. Setting this to
// zero disables the limitation
MaxLoopTimes=0
// Amount of minutes to call f_onserver_timer (0 disables this, default)
TimerCall=0
// Should sphere record the time it takes to do actions like treating npcs, scripts, clients and such?
// Can be viewed by right clicking the mouse on sphere screen.
PROFILE=0
///////////////////////////////////////////////////////////////
//////// Magic/Effects Settings
///////////////////////////////////////////////////////////////
// Allow casting while equipped
EquippedCast=1
// Words of power for player using magic
WOPPlayer=1
// Words of power color
WOPColor=0481,,1
// Words of power for staff using magic
WOPStaff=0
// Reagents lost if magic fails
ReagentLossFail=0
// Magic requires reagents
ReagentsRequired=0
// What % of hitpoints players will resurrect with. Note, that if you set this
// too low, people with little STR will have problems resurrecting.
HitPointPercentOnRez=33
// How many % of hits will the character loose when starving. 0 disables
//HitsHungerLoss=0
// Amount of skill of lock picking needed to unlock a magically locked door
MagicUnlockDoor=900
// Teleport effect for GMs and players. Setting 0 disables the effect
TeleportEffectNPC=0372a
TeleportEffectPlayers=0372a
TeleportEffectStaff=03709
TeleportSoundNPC=01fe
TeleportSoundPlayers=01fe
TeleportSoundStaff=01f3
///////////////////////////////////////////////////////////////
//////// Experience and Level system
///////////////////////////////////////////////////////////////
// Enable experience system
//ExperienceSystem=0
// Experience system settings:
// 0001 gain experience in combat
// 0002 gain experience in crafts
// 0004 allow experience to go down
// 0008 limit experience decrease by a range witheen a current level
// 0010 auto-init EXP/LEVEL for NPCs if not set in @Create
// 0020 allow trigger @ExpChange
// 0040 allow trigger @ExpLevelChange
//ExperienceMode=0
// If combat experience gain is allowed, use these percents for gaining exp in
// Player versus Monster and Player versus Player combats. Value 0 disables gain.
//ExperienceKoefPVM=100
//ExperienceKoefPVP=100
// Enable levels system (as a part of experience system)
//LevelSystem=0
// Level system settings:
// linear = 0 (each NextLevelAt exp will give a level up)
// double = 1 (you need (NextLevelAt * (level+1)) to get a level up)
//LevelMode=1
// Amount of experience to raise to the next level
//LevelNextAt=0
///////////////////////////////////////////////////////////////
//////// external program support
///////////////////////////////////////////////////////////////
// TNG
// on Linux do sth like "/srv/www/"
// on Windows do sth. like "C:&&??foo&&??bar&&??"
StripPath=scripts&&??web&&??
///////////////////////////////////////////////////////////////
//////// Webpage Settings
///////////////////////////////////////////////////////////////
// Note, that you can catch error codes by creating sphere404.htm and so on
// for all HTTP error codes sphere support.
[WEBPAGE 1]
// Determines what html file is used as base for the status page
WebPageSrc=scripts&&??web&&??spherestatusbase.html
// Determines where the status page is saved
WebPageFile=scripts&&??web&&??status.html
// In seconds, how often the status file is updated
WebPageUpdate=60
// Required PLevel to view this page (0 = anyone, 6 = admins only)
PLevel=0
///////////////////////////////////////////////////////////////
//////// Abuse Control
///////////////////////////////////////////////////////////////
// Block these ips from the server
// 255 is a wildcard, so 255.255.255.255 disables anyone connecting.
[BlockIP]
//123.34.45.56
//123.45.56.78
///////////////////////////////////////////////////////////////
//////// Connection Information
///////////////////////////////////////////////////////////////
//First line should be the name of your shard (this is what people see when they connect)
//Second line should be the IP of your shard (this is almost always 127.0.0.1)
//Third line should be the port of your shard (this should be whatever ServPort is set to)
//Uncomment next 3 lines below this if you have a router
//First line should be a name different than your shard name above this
//Second line should be your real/external IP (www.whatismyip.com)
//Third line should be the shard port (this should be whatever ServPort is set to)
[SERVERS]
XXxXxXx
127.0.0.1
2593
//External
//my.ip.goes.here
//2593
[EOF]
[function spell_say]
sayua 0481,6,6,0 <args>
return 1
if (<argn> == 1)// Clumsy
spell_say Uus Jux
mg1
elseif (<argn> == 2)
spell_say In Mani Ylem // Create food
foodverici
mg1
elseif (<argn> == 3) // Feeblemind
spell_say Rel Wis
mg1
elseif (<argn> == 4) // Heal
spell_say In Mani
sd 1
if (<src.findid.i_bleeding> || (<src.findid.i_bleeding2>)
sysmessage @066d,,1 Yaranızı iyileştirmelisiniz.
f_fizzle
return 1
return 1
endif
mg2
elseif (<argn> == 5) // Magic Arrow
spell_say In Por Ylem
mg1
elseif (<argn> == 6) // Night Sight
spell_say In Lor
mg1
elseif (<argn> == 7) // Reactive Armor
if (<act.serial>==<targ.serial>)
spell_say Flam Sanct
sd 1
mg1
else
skill fail
sysmessage @066d,,1 Bu büyüyü sadece kendinizde kullanabilirsiniz.
return 1
endif
elseif (<argn> == 8) // Weaken
spell_say Des Mani
mg1
elseif (<argn> == 9) // Agility
spell_say Ex Uus
mg2
elseif (<argn> == 10) // Cunning
spell_say Uus Wis
mg2
elseif (<argn> == 11) // Cure
spell_say An Nox
sd 1
if (<act.findid.i_rune_poison>)
if (<act.findid.i_rune_poison.morey> > <eval ((<magery> + 400) / 2)>)
if !(rand(8) == 1)
act.effect 3,0374a,1,15,1
act.sound snd_spell_poison
f_fizzle
return 1
endif
endif
endif
mg2
elseif (<argn> == 12) // Harm
spell_say An Mani
sd 1
mg2
elseif (<argn> == 13) // Trap
spell_say In Jux
f_fizzle
return 1
elseif (<argn> == 14) // Untrap
spell_say An Jux
f_fizzle
return 1
elseif (<argn> == 15) // Protection
if (<act.serial>==<targ.serial>)
spell_say Uus Sanct
sd 1
mg2
else
skill fail
sysmessage @066d,,1 Bu büyüyü sadece kendinizde kullanabilirsiniz.
return 1
endif
elseif (<argn> == 16) // Strength
spell_say Uus Mani
sd 1
mg2
elseif (<argn> == 17) // Bless
if (<act.serial>==<targ.serial>)
spell_say Rel Sanct
sd 1
mg3
else
skill fail
sysmessage @066d,,1 Bu büyüyü sadece kendinizde kullanabilirsiniz.
return 1
endif
elseif (<argn> == 18)
IF (<SRC.ACT.ISCHAR>)
IF !(<src.ACT.ISEVENT.e_evabonus>)
src.ACT.EVENTS +e_evabonus
endif
endif // Fireball
spell_say Vas Flam
sd 1
mg3
elseif (<argn> == 19) // Lock
spell_say An Por
f_fizzle
return 1
elseif (<argn> == 20) // Poison
if !(<act.serial>==<targ.serial>)
spell_say In Nox
psg
sd 1
else
skill fail
sysmessage @066d,,1 Bu büyüyü kendinize atamazsınız.
return 1
endif
elseif (<argn> == 21) // Telekinesis
spell_say Ort Por Ylem
src.sysmessage @066d,,1 Bu büyünün kullanımı kapatılmıştır.
f_fizzle
return 1
elseif (<argn> == 22) // Teleport
spell_say Rel Por
if (<src.region.guarded> == 1)
src.sysmessage @066d,,1 Bu büyüyü korunaklı bir şehirde yapamazsınız.
f_fizzle
return 1
endif
mg3
sd 2
elseif (<argn> == 23) // Unlock
spell_say Ex Por
f_fizzle
return 1
elseif (<argn> == 24) // Wall
spell_say In Sanct Ylem
if (<act.topobj.ischar>)
f_fizzle
return 1
elseif (<src.region.guarded> == 1)
src.sysmessage @066d,,1 Bu büyüyü korunaklı bir şehirde yapamazsınız.
f_fizzle
return 1
endif
mg3
sd 2
elseif (<argn> == 25) // Arch Cure
spell_say Vas An Nox
sd 2
mg4
elseif (<argn> == 26) // Arch Protection
spell_say Vas Uus Sanct
sd 2
mg4
elseif (<argn> == 27) // Curse
spell_say Des Sanct
sd 2
mg4
elseif (<argn> == 28) // Fire Field
spell_say In Flam Grav
if (<act.topobj.ischar>)
f_fizzle
return 1
elseif (<src.region.guarded> == 1)
src.sysmessage @066d,,1 Bu büyüyü korunaklı bir şehirde yapamazsınız.
f_fizzle
return 1
endif
mg4
sd 2
elseif (<argn> == 29) // Greater Heal
spell_say In Vas Mani
sd 2
if (<src.findid.i_bleeding> || (<src.findid.i_bleeding2>
sysmessage @066d,,1 Yaranizi iyilestirmelisiniz.
f_fizzle
return 1
return 1
endif
mg4
elseif (<argn> == 30)
IF (<SRC.ACT.ISCHAR>)
IF !(<src.ACT.ISEVENT.e_evabonus>)
src.ACT.EVENTS +e_evabonus
endif
endif // Lightning
spell_say Por Ort Grav
sd 2
mg4
elseif (<argn> == 31) // Mana Drain
spell_say Ort Rel
f_fizzle
return 1
elseif (<argn> == 32) // Recall
spell_say Kal Ort Por
sd 2
mg4
if (0<src.tag.ticaret>==01)
if !(0<src.tag.ticaretk>==0<uid>
src.sysmessage @066d,,1 Ticaret yaparken bunu kullanamazsınız.
f_fizzle
return 1
endif
endif
elseif (<argn> == 33) // Blade Spirits
spell_say In Jux Hur Ylem
if (<src.region.guarded> == 1)
src.sysmessage @066d,,1 Bu büyüyü korunaklı bir şehirde yapamazsınız.
f_fizzle
return 1
endif
mg5
sd 2
elseif (<argn> == 34) // Dispel Field
spell_say An Grav
if (<act.ischar>)
f_fizzle
return 1
endif
sd 2
mg5
elseif (<argn> == 35) // Incognito
spell_say Kal In Ex
f_fizzle
return 1
elseif (<argn> == 36) // Magic Reflect
spell_say In Jux Sanct
sd 2
mg5
elseif (<argn> == 37) // Mind Blast
spell_say Por Corp Wis
sd 2
mg5
elseif (<argn> == 38) // Paralyze
spell_say An Ex Por
sd 2
mg5
elseif (<argn> == 39) // Poison Field
spell_say In Nox Grav
if (<act.topobj.ischar>)
f_fizzle
return 1
elseif (<src.region.guarded> == 1)
src.sysmessage @066d,,1 Bu büyüyü korunaklı bir şehirde yapamazsınız.
f_fizzle
return 1
endif
sd 2
mg5
elseif (<argn> == 40) // Summon Creature
spell_say Kal Xen
if (<src.region.guarded> == 1)
src.sysmessage @066d,,1 Bu büyüyü korunaklı bir şehirde yapamazsınız.
f_fizzle
return 1
endif
mg5
sd 2
elseif (<argn> == 41) // Dispel
spell_say An Ort
sd 2
mg6
elseif (<argn> == 42)
IF (<SRC.ACT.ISCHAR>)
IF !(<src.ACT.ISEVENT.e_evabonus>)
src.ACT.EVENTS +e_evabonus
endif
endif // Energy Bolt
spell_say Corp Por
sd 2
mg6
elseif (<argn> == 43) // Explosion
spell_say Vas Ort Flam
sd 2
mg6
elseif (<argn> == 44) // Invisibility
spell_say An Lor Xen
sd 2
mg6
elseif (<argn> == 45) // Mark
spell_say Kal Por Ylem
sd 2
mg6
elseif (<argn> == 46) // Mass Curse
spell_say Vas Des Sanct
sd 2
mg6
elseif (<argn> == 47) // Paralyze Field
spell_say In Ex Grav
if (<act.topobj.ischar>)
f_fizzle
return 1
elseif (<src.region.guarded> == 1)
src.sysmessage @066d,,1 Bu büyüyü korunaklı bir şehirde yapamazsınız.
f_fizzle
return 1
endif
mg6
sd 2
elseif (<argn> == 48) // Reveal
spell_say Wis Quas
sd 2
mg6
elseif (<argn> == 49) // Chain Lightning
spell_say Vas Ort Grav
if (<act.uid> == <uid>)
f_fizzle
return 1
endif
sd 3
mg7
if (<src.region.guarded> == 1)
f_fizzle
src.sysmessage @066d,,1 Bu büyüyü korunaklı bir şehirde yapamazsınız.
return 1
endif
elseif (<argn> == 50) // Energy Field
spell_say In Sanct Grav
if (<act.topobj.ischar>)
f_fizzle
return 1
elseif (<src.region.guarded> == 1)
src.sysmessage @066d,,1 Bu büyüyü korunaklı bir şehirde yapamazsınız.
f_fizzle
return 1
endif
mg7
sd 2
elseif (<argn> == 51)
src.events +e_evabonus // Flame strike
spell_say Kal Vas Flam
sd 3
mg7
elseif (<argn> == 52) // Gate Travel
spell_say Vas Rel Por
sd 3
mg7
elseif (<argn> == 53) // Mana Vampire
spell_say Ort Sanct
f_fizzle
return 1
elseif (<argn> == 54) // Mass Dispel
spell_say Vas An Ort
sd 3
mg7
elseif (<argn> == 55) // Meteor Swarm
spell_say Flam Kal Des Ylem
if (<src.region.guarded> == 1)
src.sysmessage @066d,,1 Bu büyüyü korunaklı bir şehirde yapamazsınız.
f_fizzle
return 1
endif
mg7
sd 3
elseif (<argn> == 56) // Polymorph
spell_say Vas Ylem Rel
sd 7
mg3
elseif (<argn> == 57) // Earthquake
spell_say In Vas Por
if (<src.region.guarded> == 1)
src.sysmessage @066d,,1 Bu büyüyü korunaklı bir şehirde yapamazsınız.
f_fizzle
return 1
endif
mg8
sd 4
elseif (<argn> == 58) // Energy Vortex
spell_say Vas Corp Por
if (<src.region.guarded> == 1)
src.sysmessage @066d,,1 Bu büyüyü korunaklı bir şehirde yapamazsınız.
f_fizzle
return 1
endif
mg8
sd 3
elseif (<argn> == 59) // Resurrect
spell_say An Corp
sd 3
mg8
elseif (<argn> == 60) // Air Elemental
spell_say Kal Vas Xen Hur
if (<src.region.guarded> == 1)
src.sysmessage @066d,,1 Bu büyüyü korunaklı bir şehirde yapamazsınız.
f_fizzle
return 1
endif
mg8
sd 3
elseif (<argn> == 61) // Summon Deamon
spell_say Kal Vas Xen Corp
if (<src.region.guarded> == 1)
src.sysmessage @066d,,1 Bu büyüyü korunaklı bir şehirde yapamazsınız.
f_fizzle
return 1
endif
mg8
sd 3
elseif (<argn> == 62) // Earth Elemental
spell_say Kal Vas Xen Ylem
if (<src.region.guarded> == 1)
src.sysmessage @066d,,1 Bu büyüyü korunaklı bir şehirde yapamazsınız.
f_fizzle
return 1
endif
mg8
sd 3
elseif (<argn> == 63) // Fire Elemental
spell_say Kal Vas Xen Flam
if (<src.region.guarded> == 1)
src.sysmessage @066d,,1 Bu büyüyü korunaklı bir şehirde yapamazsınız.
f_fizzle
return 1
endif
mg8
sd 3
elseif (<argn> == 64) // Water Elemental
spell_say Kal Vas Xen An Flam
if (<src.region.guarded> == 1)
src.sysmessage @066d,,1 Bu büyüyü korunaklı bir şehirde yapamazsınız.
f_fizzle
return 1
endif
mg8
sd 3
endif
// ----------------------------
// MAGERY.SCP - MAGERY VE FREEZETIME SISTEMi
//
// ----------------------------
//------------------
// freezetime - eq items
//------------------
[function f_fizzle] // fizzle func.
effect 3,i_fx_smoke_small,3,40,1
sound 92
if (<mana> > 8)
mana (<mana> - &褳5 8})
else
mana 1
endif
if (<findid.i_magerylvl>)
findid.i_magerylvl.remove
endif
if (<findid.i_evallvl>)
findid.i_evallvl.remove
endif
if (<findid.i_poisonlvl>)
findid.i_poisonlvl.remove
endif
if (<findid.i_spdelay_man>)
findid.i_spdelay_man.remove
elseif (<findid.i_spdelay_woman>)
findid.i_spdelay_woman.remove
endif
[itemdef i_magerylvl]
name=magery gain
id=i_memory
type=t_eq_script
weight=0
layer=layer_special
On=@Create
attr attr_invis|attr_decay
On=@Equip
timer 6
On=@Timer
if (<cont.int> < 60)
if (rand(15) == 1)
cont.int (<cont.int> + 1)
endif
elseif (<cont.int> < 100)
if (rand(25) == 1)
cont.int (<cont.int> + 1)
endif
endif
// Level 1
if (<more1> == 1)
if (rand(1) == 1) //3
cont.magery (<cont.magery> + 1)
endif
// Level 2
elseif (<more1> == 2)
if (rand(2) == 1) //8
cont.magery (<cont.magery> + 1)
endif
// Level 3
elseif (<more1> == 3)
if (rand(2) == 1) //10
cont.magery (<cont.magery> + 1)
endif
// Level 4
elseif (<more1> == 4)
if (rand(2) == 1) //15
cont.magery (<cont.magery> + 1)
endif
// Level 5
elseif (<more1> == 5)
if (rand(2) == 1) //20
cont.magery (<cont.magery> + 1)
endif
// Level 6
elseif (<more1> == 6)
if (rand(2) == 1) //25
cont.magery (<cont.magery> + 1)
endif
// Level 7
elseif (<more1> == 7)
if (rand(2) == 1) //30
cont.magery (<cont.magery> + 1)
endif
// Level 8
elseif (<more1> == 8)
if (rand(4) == 1) //35
cont.magery (<cont.magery> + 1)
endif
endif
attr attr_decay
remove
return 1
[itemdef i_evallvl]
name=eval intel gain
id=i_memory
type=t_eq_script
weight=0
layer=layer_special
On=@Create
attr attr_invis|attr_decay
On=@Equip
timer 6
On=@Timer
// Level 1
if (<more1> == 1)
if (rand(2) == 1)
cont.evaluatingintel (<cont.evaluatingintel> + 1)
endif
// Level 2
elseif (<more1> == 2)
if (rand(3) == 1) //3
cont.evaluatingintel (<cont.evaluatingintel> + 1)
endif
// Level 3
elseif (<more1> == 3)
if (rand(3) == 1) //8
cont.evaluatingintel (<cont.evaluatingintel> + 1)
endif
// Level 4
elseif (<more1> == 4)
if (rand(3) == 1) //10
cont.evaluatingintel (<cont.evaluatingintel> + 1)
endif
// Level 5
elseif (<more1> == 5)
if (rand(3) == 1) //15
cont.evaluatingintel (<cont.evaluatingintel> + 1)
endif
// Level 6
elseif (<more1> == 6)
if (rand(3) == 1) //20
cont.evaluatingintel (<cont.evaluatingintel> + 1)
endif
// Level 7
elseif (<more1> == 7)
if (rand(15) == 1) //25
cont.evaluatingintel (<cont.evaluatingintel> + 1)
endif
// Level 8
elseif (<more1> == 8)
if (rand(16) == 1) //30
cont.evaluatingintel (<cont.evaluatingintel> + 1)
endif
endif
attr attr_decay
remove
return 1
[itemdef i_poisonlvl]
name=poison gain
id=i_memory
type=t_eq_script
weight=0
layer=layer_special
On=@Create
attr attr_invis|attr_decay
On=@Equip
timer 3
On=@Timer
cont.poisoning (<cont.poisoning> + 1)
attr attr_decay
remove
return 1
[comment poi]
if (<more1> == 1)
elseif (<more1> == 2)
cont.poisoning (<cont.poisoning> + 1)
elseif (<more1> == 3)
cont.poisoning (<cont.poisoning> + 3)
elseif (<more1> == 4)
cont.poisoning (<cont.poisoning> + 4)
elseif (<more1> == 5)
cont.poisoning (<cont.poisoning> + 5)
elseif (<more1> == 6)
cont.poisoning (<cont.poisoning> + 6)
elseif (<more1> == 7)
cont.poisoning (<cont.poisoning> + 7)
elseif (<more1> == 8)
cont.poisoning (<cont.poisoning> + 8)
endif
[itemdef i_spdelay_woman]
name=magery delay (woman)
id=i_gold
type=t_eq_script
weight=0
layer=layer_special
On=@Equip
src.body c_woman_nomove
if (<more1>)
timer <more1>
endif
On=@UnEquip
if !(<cont.flags>&statf_dead)
cont.body c_woman
cont.obody c_woman
endif
On=@Timer
remove
return 1
[itemdef i_spdelay_poly]
name=magery delay poly
id=i_gold
type=t_eq_script
weight=0
layer=layer_special
On=@Equip
cont.flags <cont.flags>|04
if (<more1>)
timer <more1>
endif
On=@UnEquip
if !(<cont.flags>&statf_dead)
cont.flags <cont.flags>&~04
endif
On=@Timer
remove
return 1
[itemdef i_spdelay_man]
name=magery delay (man)
id=i_gold
type=t_eq_script
weight=0
layer=layer_special
On=@Equip
src.body c_man_nomove
if (<more1>)
timer <more1>
endif
On=@UnEquip
if !(<cont.flags>&statf_dead)
cont.body c_man
cont.obody c_man
endif
On=@Timer
remove
return 1
//------------------
// freeze body&裟s
//------------------
[chardef c_man_nomove]
id c_man
can mt_usehands // newly added
foodtype 15 t_food, t_fruit
On=@GetHit
body c_man
obody c_man
[chardef c_woman_nomove]
id c_woman
can mt_usehands|mt_female
foodtype 15 t_food, t_fruit
On=@GetHit
body c_woman
obody c_woman
//------------------
// freezetime control functionz
//------------------
[function sd]
//if ((<findid.i_spdelay_man>) || (<findid.i_spdelay_woman>))
//skill fail
findid.i_spdelay_man.remove
findid.i_spdelay_woman.remove
//else
if (<body> == c_man)
var.m <act.uid>
newitem i_spdelay_man
act.more1 <args>
act.equip
act <var.m>
elseif (<body> == c_woman)
var.m <act.uid>
newitem i_spdelay_woman
act.more1 <args>
act.equip
act <var.m>
else
var.m <act.uid>
newitem i_spdelay_poly
act.more1 <args>
act.equip
act <var.m>
endif
//endif
//------------------
// magery control functionz
//------------------
// Level 1
[function mg1]
if (<magery> < 30.0) && ((<skilllock[25]> == 0) && (<skilltotal> < 800.0))
findid.i_magerylvl.remove
var.m2 <act.uid>
newitem i_magerylvl
act.more1 1
act.equip
act <var.m2>
endif
if (<evaluatingintel> < 30.0) && ((<skilllock[16]> == 0) && (<skilltotal> < 800.0))
findid.i_evallvl.remove
var.m2 <act.uid>
newitem i_evallvl
act.more1 1
act.equip
act <var.m2>
endif
// Level 2
[function mg2]
if (<magery> < 40.0) && ((<skilllock[25]> == 0) && (<skilltotal> < 800.0))
findid.i_magerylvl.remove
var.m2 <act.uid>
newitem i_magerylvl
act.more1 2
act.equip
act <var.m2>
endif
if (<evaluatingintel> < 40.0) && ((<skilllock[16]> == 0) && (<skilltotal> < 800.0))
findid.i_evallvl.remove
var.m2 <act.uid>
newitem i_evallvl
act.more1 2
act.equip
act <var.m2>
endif
// Level 3
[function mg3]
if (<magery> < 50.0) && ((<skilllock[25]> == 0) && (<skilltotal> < 800.0))
findid.i_magerylvl.remove
var.m2 <act.uid>
newitem i_magerylvl
act.more1 3
act.equip
act <var.m2>
endif
if (<evaluatingintel> < 50.0) && ((<skilllock[16]> == 0) && (<skilltotal> < 800.0))
findid.i_evallvl.remove
var.m2 <act.uid>
newitem i_evallvl
act.more1 3
act.equip
act <var.m2>
endif
// Level 4
[function mg4]
if (<magery> < 60.0) && ((<skilllock[25]> == 0) && (<skilltotal> < 800.0))
findid.i_magerylvl.remove
var.m2 <act.uid>
newitem i_magerylvl
act.more1 4
act.equip
act <var.m2>
endif
if (<evaluatingintel> < 60.0) && ((<skilllock[16]> == 0) && (<skilltotal> < 800.0))
findid.i_evallvl.remove
var.m2 <act.uid>
newitem i_evallvl
act.more1 4
act.equip
act <var.m2>
endif
// Level 5
[function mg5]
if (<magery> < 70.0) && ((<skilllock[25]> == 0) && (<skilltotal> < 800.0))
findid.i_magerylvl.remove
var.m2 <act.uid>
newitem i_magerylvl
act.more1 5
act.equip
act <var.m2>
endif
if (<evaluatingintel> < 70.0) && ((<skilllock[16]> == 0) && (<skilltotal> < 800.0))
findid.i_evallvl.remove
var.m2 <act.uid>
newitem i_evallvl
act.more1 5
act.equip
act <var.m2>
endif
// Level 6
[function mg6]
if (<magery> < 80.0) && ((<skilllock[25]> == 0) && (<skilltotal> < 800.0))
findid.i_magerylvl.remove
var.m2 <act.uid>
newitem i_magerylvl
act.more1 6
act.equip
act <var.m2>
endif
if (<evaluatingintel> < 80.0) && ((<skilllock[16]> == 0) && (<skilltotal> < 800.0))
findid.i_evallvl.remove
var.m2 <act.uid>
newitem i_evallvl
act.more1 6
act.equip
act <var.m2>
endif
// Level 7
[function mg7]
if (<magery> < 90.0) && ((<skilllock[25]> == 0) && (<skilltotal> < 800.0))
findid.i_magerylvl.remove
var.m2 <act.uid>
newitem i_magerylvl
act.more1 7
act.equip
act <var.m2>
endif
if (<evaluatingintel> < 90.0) && ((<skilllock[16]> == 0) && (<skilltotal> < 800.0))
findid.i_evallvl.remove
var.m2 <act.uid>
newitem i_evallvl
act.more1 7
act.equip
act <var.m2>
endif
// Level 8
[function mg8]
if (<magery> < 100.0) && ((<skilllock[25]> == 0) && (<skilltotal> < 800.0))
findid.i_magerylvl.remove
var.m2 <act.uid>
newitem i_magerylvl
act.more1 8
act.equip
act <var.m2>
endif
if (<evaluatingintel> < 100.0) && ((<skilllock[16]> == 0) && (<skilltotal> < 800.0))
findid.i_evallvl.remove
var.m2 <act.uid>
newitem i_evallvl
act.more1 8
act.equip
act <var.m2>
endif
//------------------
// poison functionz
//------------------
[function psg]
if (<src.magery> < 50.0) && ((<skilllock[25]> == 0) && (<skilltotal> < 700.0))
findid.i_magerylvl.remove
var.m2 <act.uid>
newitem i_magerylvl
act.more1 3
act.equip
act <var.m2>
endif
if (<src.evaluatingintel> < 50.0) && ((<skilllock[16]> == 0) && (<skilltotal> < 700.0))
findid.i_evallvl.remove
var.m2 <act.uid>
newitem i_evallvl
act.more1 3
act.equip
act <var.m2>
endif
if (<src.poisoning> < 100.0) && ((<skilllock[30]> == 0) && (<skilltotal> < 700.0))
findid.i_poisonlvl.remove
var.m2 <act.uid>
newitem i_poisonlvl
if (<src.poisoning> < 30.0)
if (rand(2) == 1)
act.more1 2
endif
elseif (<src.poisoning> > 29.9) && (<src.poisoning> < 40.0)
if (rand(2) == 1)
act.more1 2
endif
elseif (<src.poisoning> > 39.9) && (<src.poisoning> < 50.0)
if (rand(2) == 1)
act.more1 2
endif
elseif (<src.poisoning> > 49.9) && (<src.poisoning> < 60.0)
if (rand(2) == 1)
act.more1 2
endif
elseif (<src.poisoning> > 59.9) && (<src.poisoning> < 70.0)
if (rand(2) == 1)
act.more1 1
endif
elseif (<src.poisoning> > 69.9) && (<src.poisoning> < 80.0)
if (rand(2) == 1)
act.more1 1
endif
elseif (<src.poisoning> > 79.9) && (<src.poisoning> < 90.0)
if (rand(2) == 1)
act.more1 1
endif
elseif (<src.poisoning> > 89.9)
if (rand(2) == 1)
act.more1 1
endif
else
act.more1 9
endif
act.equip
act <var.m2>
endif
//------------------
// breakspell functionz
//------------------
// Circle 1
[function breakspell1]
f_fizzle
// Circle 2
[function breakspell2]
f_fizzle
if (<src.mana> > 20)
src.mana (<src.mana> - &褳8 10})
else
src.mana 0
endif
// Circle 3
[function breakspell3]
f_fizzle
if (<src.mana> > 25)
src.mana (<mana> - &褳10 15})
else
src.mana 0
endif
// Circle 4
[function breakspell4]
f_fizzle
if (<src.mana> > 30)
src.mana (<src.mana> - &褳15 20})
else
src.mana 0
endif
// Circle 5
[function breakspell5]
f_fizzle
if (<src.mana> > 35)
src.mana (<src.mana> - &褳20 25})
else
src.mana 0
endif
// Circle 6
[function breakspell6]
f_fizzle
if (<src.mana> > 40)
src.mana (<src.mana> - &褳25 30})
else
src.mana 0
endif
// Circle 7
[function breakspell7]
f_fizzle
if (<src.mana> > 45)
src.mana (<src.mana> - &褳30 35})
else
src.mana 0
endif
// Circle 8
[function breakspell8]
f_fizzle
if (<src.mana> > 50)
src.mana (<src.mana> - &褳35 40})
else
src.mana 0
endif
//------------------
// spell: explosion
//------------------
[itemdef i_spelleffect_explosion]
name=[explosion spelleffect]
id=i_gold
type=t_eq_script
weight=0
layer=layer_special
On=@Equip
cont.sayu explosion
timer 2
On=@Timer
cont.effect 3,i_fx_explode,6,15,1
cont.sfx snd_spell_explosion
if (<cont.hitpoints> > 32)
cont.hits=(<cont.hits> - &褳25 30})
cont.damage 1
else
cont.hits=0
endif
attr attr_decay
remove
return 1
//------------------
// spell: polymorph
//------------------
[function plym]
if (<findid.i_pre_morph>)
findid.i_pre_morph.remove
f_fizzle
endif
if !(<findid.i_morpher>)
newitem i_pre_morph
act.more <args>
act.equip
newitem i_morpher
act.more <body>
act.equip
else
findid.i_morpher.timer &褳285 320}
newitem i_pre_morph
act.more <args>
act.equip
endif
[itemdef i_pre_morph]
name=[casting polymorph]
id=i_gold
type=t_eq_script
weight=0
layer=layer_special
On=@Equip
timer 4
cont.spell_say Vas Ylem Rel
cont.anim 17
cont.sd 3
cont.events +e_breakpoly
On=@UnEquip
cont.events -e_breakpoly
cont.consume 1 i_reag_spider_silk
cont.consume 1 i_reag_blood_moss
cont.consume 1 i_reag_mandrake_root
cont.consume 1 i_reag_sulfur_ash
On=@Timer
attr attr_decay
if (<cont.mana> < 40)
cont.f_fizzle
else
cont.mana (<cont.mana> - 40)
cont.sfx snd_spell_polymorph
cont.body <more>
cont.update
endif
remove
return 1
[itemdef i_morpher]
name=Polymorph
id=i_rune_polymorph
type=t_eq_script
weight=0
layer=layer_special
On=@Equip
timer &褳285 320}
cont.events +e_poly
On=@UnEquip
cont.events -e_poly
cont.body <more>
cont.update
On=@Timer
attr attr_decay
remove
return 1
[events e_poly]
On=@Death
findid.i_morpher.remove
[events e_breakpoly]
On=@SpellCast
findid.i_pre_morph.remove
findid.i_morpher.remove
f_fizzle
On=@GetHit
findid.i_pre_morph.remove
findid.i_morpher.remove
f_fizzle
On=@Hit
findid.i_pre_morph.remove
findid.i_morpher.remove
f_fizzle
On=@Death
findid.i_pre_morph.remove
findid.i_morpher.remove
On=@SkillStart
findid.i_pre_morph.remove
findid.i_morpher.remove
f_fizzle
[itemdef i_spdelay_unisex] // unicornlarla seks anlaminda
name=magery delay (unisex)
id=i_gold
type=t_eq_script
weight=0
layer=layer_special
On=@Equip
cont.flags <cont.flags>|04 // paralarim lan adami uniseksmi&補
if (<more1>)
timer <more1>
endif
On=@UnEquip
if !(<cont.flags>&statf_dead)
cont.flags <cont.flags>&~04
endif
On=@Timer
remove
return 1
[EOF]