Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  
Pages: 1 ... 12 13 [14] 15 16 ... 42

Author Topic: [DFHack] Roses' Script Collection Updated 5/4/15  (Read 125196 times)

Roses

  • Bay Watcher
    • View Profile
Re: DFHack Spells official v1.0
« Reply #195 on: May 31, 2014, 12:36:11 pm »

Yep, works in a square radius (so no circle cut offs) and can teleport all units or items or both (inventory items are transported with the unit). I a going to add an option to teleport liquids as well so you could teleport magma up from the magma sea instead of just spawning it with the eruption.lua script
Logged

Deon

  • Bay Watcher
  • 💀 💀 💀 💀 💀
    • View Profile
Re: DFHack Spells official v1.0
« Reply #196 on: May 31, 2014, 12:47:12 pm »

Okay, the teleport does not work as well if you setup some zones. I think stockpiles may cause it as well. Can you make it check workshops/furnaces ONLY?



I underscored the civzone thing.
Logged
▬(ஜ۩۞۩ஜ)▬
✫ DF Wanderer ✫ - the adventure mode crafting and tweaks
✫ Cartographer's Lounge ✫ - a custom worldgen repository

Roses

  • Bay Watcher
    • View Profile
Re: DFHack Spells official v1.0
« Reply #197 on: May 31, 2014, 12:49:04 pm »

Yeah, its all the same problem. I will fix it later today to ignore anything thats not a workshop or furnace.
Logged

Deon

  • Bay Watcher
  • 💀 💀 💀 💀 💀
    • View Profile
Re: DFHack Spells official v1.0
« Reply #198 on: May 31, 2014, 12:50:41 pm »

Amazing, I will try out your other scripts now and let you know if I find something. Man you gave me a fresh desire to mod again :). I can't imagine how much of cool stuff I can do with these new toys.
Logged
▬(ஜ۩۞۩ஜ)▬
✫ DF Wanderer ✫ - the adventure mode crafting and tweaks
✫ Cartographer's Lounge ✫ - a custom worldgen repository

Roses

  • Bay Watcher
    • View Profile
Re: DFHack Spells official v1.0
« Reply #199 on: May 31, 2014, 01:48:20 pm »

Yeah, I have been making fun interactions a bunch. Gonna upload a 100+ example interactions at the start of next week so you can see some of my ideas.

The three I am having fun with right now are goblins using magic that has a chance to backfire and cause them to explode. Automatons that link together and share stats so you can chose to kill the warriors and lower all the toughness/endurance or the fighters and lower all the strength/agility, or the leaders and stop the linking all together. And, orcs that use the spirits of the fallen friends in combat to enhance there abilities.

Lots of different possibilities.
Logged

Deon

  • Bay Watcher
  • 💀 💀 💀 💀 💀
    • View Profile
Re: DFHack Spells official v1.0
« Reply #200 on: May 31, 2014, 05:42:19 pm »

Upgradebuilding works like a charm. Finally I can make an assembly line -> automated factory -> robotics factory transition and the like without a requirement for a TON of buildings. And the fact that the reagents are put into building are amazing, just what I need for my "blueprints"!
Logged
▬(ஜ۩۞۩ஜ)▬
✫ DF Wanderer ✫ - the adventure mode crafting and tweaks
✫ Cartographer's Lounge ✫ - a custom worldgen repository

Roses

  • Bay Watcher
    • View Profile
Re: DFHack Spells official v1.0
« Reply #201 on: May 31, 2014, 09:34:07 pm »

Glad that it is working, I should have a fixed version of upgradebuildings and teleport/teleportbase up by Monday so that it won't have troubles with non-workshop/furnace buildings, and it will add all PRESERVE_REAGENT reagents to the building instead of just the first.

The counters is proving to be a little more difficult, sometimes it seems to be working, other times it doesn't, hopefully I can get it working right on Monday, but it might take longer.
Logged

Meph

  • Bay Watcher
    • View Profile
    • worldbicyclist
Re: DFHack Spells official v1.0
« Reply #202 on: June 01, 2014, 03:59:52 am »

Yeah, this whole thing is pretty rad. :) It allows so much... narhiril should probably be told as well, with her tech tree in LFR. :)

Btw, deon, if you left-click on the dwarf icon (upper left) on the dfhack window, you can go to edit:mark all and edit:copy. That way you can copy/paste text directly from the box, no need for screenshots. :)
Logged
::: ☼Meph Tileset☼☼Map Tileset☼- 32x graphic sets with TWBT :::
::: ☼MASTERWORK DF☼ - A comprehensive mod pack now on Patreon - 250.000+ downloads and counting :::
::: WorldBicyclist.com - Follow my bike tours around the world - 148 countries visited :::

Deon

  • Bay Watcher
  • 💀 💀 💀 💀 💀
    • View Profile
Re: DFHack Spells official v1.0
« Reply #203 on: June 01, 2014, 04:26:50 am »

But I think that such screenshots are easy to look at as well, I mean you can read all the text just fine, so it's not a big deal :).

P.S. Apparently the upright -adamantine shortsword- is also considered a building, so the teleport gives an error about it as well. An easy way to find cotton candy places! :)
« Last Edit: June 01, 2014, 05:30:40 am by Deon »
Logged
▬(ஜ۩۞۩ஜ)▬
✫ DF Wanderer ✫ - the adventure mode crafting and tweaks
✫ Cartographer's Lounge ✫ - a custom worldgen repository

Roses

  • Bay Watcher
    • View Profile
Re: DFHack Spells official v1.0
« Reply #204 on: June 01, 2014, 09:53:00 pm »

I am definitely doing something wrong...

The following syndrome on a vapor stone does not bring the result:

Code: [Select]
[SYNDROME]
[SYN_CLASS:\AUTO_SYNDROME]
[SYN_CLASS:\COMMAND]
[SYN_CLASS:counters]
[SYN_CLASS:\WORKER_ID]
[SYN_CLASS:APOCALYPSE]
[SYN_CLASS:1]
[SYN_CLASS:minimum]
[SYN_CLASS:10]
[SYN_CLASS:customweather@dragonfire;100;50;1000;3000]

It's supposed to start a dragonfire all over the map after 10 uses but it does nothing.
Can you help me when you get time please? :) What am I doing wrong?

For this it was a copy/paste error on my part. It was working but had different documentation than the counters in the wrapper script, I changed it to be the same as the wrapper script so your above syndrome should work now using;

Code: [Select]
--counters.lua v1.0
--[[
counters - a stand alone version of the counters feature included in the wrapper
ID # - the units id number
\UNIT_ID - when triggering with a syndrome
\WORKER_ID - when triggering with a reaction
COUNTER_TYPE - any string value, the counter will be saved as this type
increment - amount for the counter to change
# - can be both positive and negative
style - the way to check the counter
minimum - once the value of the counter has surpassed a certain amount, the counter will trigger the script. the counter is then reset to zero
percentage - the script has a chance of triggering each time the counter is increased, with a 100% chance once it reaches a certain amount. the counter is reset to zero on triggering
cap - level of triggering for the counter
#
NOTE: Once it hits the cap (or is triggered earlier by percentage) the counter will reset to 0
script and arguments - the script to trigger when the counter is reached
In the form script@arg1;arg2;arg3
SPECIAL TOKEN: !UNIT - replaces with the unit id specified in the counters script
EXAMPLE: counters \UNIT_ID PRAY 1 minimum 100 changetraits@SELF_DISCIPLINE;!UNIT;fixed;10
--]]

arg={...}

function split(str, pat)
   local t = {}  -- NOTE: use {n = 0} in Lua-5.0
   local fpat = "(.-)" .. pat
   local last_end = 1
   local s, e, cap = str:find(fpat, 1)
   while s do
      if s ~= 1 or cap ~= "" then
table.insert(t,cap)
      end
      last_end = e+1
      s, e, cap = str:find(fpat, last_end)
   end
   if last_end <= #str then
      cap = str:sub(last_end)
      table.insert(t, cap)
   end
   return t
end

function counters(unit,array)
tempa = array
keys = tostring(unit.id)
types = tempa[1]
ints = tonumber(tempa[2])
style = tempa[3]
n = tonumber(tempa[4])
v = 0
skey = ''
si = 0
pers,status = dfhack.persistent.get(keys..'_counters_1')
num = 1
match = false
if not pers then
dfhack.persistent.save({key=keys..'_counters_1',value=types,ints={ints,0,0,0,0,0,1}})
v = ints
skey = keys..'_counters_1'
si=1
else
if pers.ints[7] <= 6 then
local valuea = split(pers.value,'_')
for i,x in ipairs(valuea) do
if x == types then
pers.ints[i] = pers.ints[i] + ints
v = pers.ints[i]
skey = keys..'_counters_1'
si = i
match = true
end
end
if not match then
if pers.ints[7] < 6 then
pers.value = pers.value .. '_' .. types
pers.ints[7] = pers.ints[7] + 1
pers.ints[pers.ints[7]] = ints
v = ints
skey = keys..'_counters_1'
si = pers.ints[7]
dfhack.persistent.save({key=pers.key,value=pers.value,ints=pers.ints})
elseif pers.ints[7] == 6 then
pers.ints[7] = 7
dfhack.persistent.save({key=keys .. '_counters_2', value=types,ints={ints,0,0,0,0,0,0}})
v = ints
skey = keys..'_counters_2'
si = 1
end
end
else
num = math.floor(pers.ints[7]/7)+1
local valuea = split(pers.value,'_')
for i,x in ipairs(valuea) do
if x == types then
pers.ints[i] = pers.ints[i] + ints
v = pers.ints[i]
skey = keys..'_counters_1'
si = i
match = true
end
end
if not match then
for j = 2, num, 1 do
keysa = keys .. '_counters_' .. tostring(j)
persa,status = dfhack.persistent.get(keysa)
local valuea = split(persa.value,'_')
for i,x in ipairs(valuea) do
if x == types then
persa.ints[i] = persa.ints[i] + ints
v = persa.ints[i]
skey = keysa
si = i
dfhack.persistent.save({key=persa.key,value=persa.value,ints=persa.ints})
match = true
end
end
end
end
if not match then
pers.ints[7] = pers.ints[7] + 1
if math.floor(pers.ints[7]/7) == pers.ints[7]/7 then
keysa = keys..'_counters_'..tostring(num+1)
dfhack.persistent.save({key=keysa, value=types,ints={ints,0,0,0,0,0,0}})
v = ints
skey = keysa
si = 1
else
persa.value = persa.value..'_'..types
persa.ints[pers.ints[7]-(num-1)*7+1] = persa.ints[pers.ints[7]-(num-1)*7+1] + ints
v = persa.ints[pers.ints[7]-(num-1)*7+1]
skey = keysa
si = pers.ints[7]-(num-1)*7+1
dfhack.persistent.save({key=persa.key,value=persa.value,ints=persa.ints})
end
end
end
dfhack.persistent.save({key=pers.key,value=pers.value,ints=pers.ints})
end


if style == 'minimum' then
print(v,n,skey,si)
if tonumber(v) >= n and n >= 0 then
pers,status=dfhack.persistent.get(skey)
pers.ints[si] = 0
dfhack.persistent.save({key=skey,value=pers.value,ints=pers.ints})
return true
end
elseif style == 'percent' then
rando = dfhack.random.new()
roll = rando:drandom()
if roll <= v/n and n >= 0 then
pers,status=dfhack.persistent.get(skey)
pers.ints[si] = 0
dfhack.persistent.save({key=skey,value=pers.value,ints=pers.ints})
return true
end
end

return false
end

trigger = counters(arg[1],{arg[2],arg[3],arg[4],arg[5]})
if trigger then
local script = split(arg[6],'@')[1]
local sargsa = split(split(arg[6],'@')[2],';')
for i,v in ipairs(sargsa) do
if v == '!UNIT' then sargsa[i] = arg[1] end
end
dfhack.run_script(script,table.unpack(sargsa))
end

Let me know if that works, hopefully it works for you (note that you can also use global in place of \WORKER_ID so that any 10 workers that use the reaction will trigger the syndrome. If using \WORKER_ID then the same worker must run the reaction 10 times).

EDIT: Update on the upgradebuilding and teleport scripts: I implemented the check that will make sure it doesn't spit out errors if other, non-workshop/furnace, buildings are around. Unfortunately it still isn't always adding all of the reagents to the building list. So far it seems to reliably do at least one, but I have had it fail to even do that one sometimes. I will need to look more closely about how the building materials are added, and if it can be done in a better way.
« Last Edit: June 02, 2014, 04:38:46 pm by Roses »
Logged

Roses

  • Bay Watcher
    • View Profile
Re: DFHack Spells official v1.0
« Reply #205 on: June 02, 2014, 06:51:22 pm »

Updated GitHub with all bug fixes. All scripts should be working now.
Logged

Meph

  • Bay Watcher
    • View Profile
    • worldbicyclist
Re: DFHack Spells official v1.0
« Reply #206 on: June 02, 2014, 06:59:41 pm »

Guess its time to update to your new versions, and scrap all my raws and try to figure out the syntax all over again. :D
Logged
::: ☼Meph Tileset☼☼Map Tileset☼- 32x graphic sets with TWBT :::
::: ☼MASTERWORK DF☼ - A comprehensive mod pack now on Patreon - 250.000+ downloads and counting :::
::: WorldBicyclist.com - Follow my bike tours around the world - 148 countries visited :::

Roses

  • Bay Watcher
    • View Profile
Re: DFHack Spells official v1.0
« Reply #207 on: June 02, 2014, 07:07:17 pm »

Sorry about the switching of syntax, but it shouldn't change again, and the ReadMe should do an alright job explaining all the syntax. I am also almost done with a group of examples that will show some of what can be done.
Logged

Meph

  • Bay Watcher
    • View Profile
    • worldbicyclist
Re: DFHack Spells official v1.0
« Reply #208 on: June 02, 2014, 07:11:22 pm »

Oh, your readme is awesome. I really like the pngs. :)

I used your scripts 5 months ago when you first released them on Warlocks, but since I have been away for 3 months, its not much content that needs to be updated. Eruption and Teleport are the biggest issues, I dont think I have been doing much else in form of released features.
Logged
::: ☼Meph Tileset☼☼Map Tileset☼- 32x graphic sets with TWBT :::
::: ☼MASTERWORK DF☼ - A comprehensive mod pack now on Patreon - 250.000+ downloads and counting :::
::: WorldBicyclist.com - Follow my bike tours around the world - 148 countries visited :::

Roses

  • Bay Watcher
    • View Profile
Re: DFHack Spells official v1.0
« Reply #209 on: June 05, 2014, 01:33:34 am »

Small update, there is a minor error in the wrapper script that effects only very specific combinations of tokens. I am already almost done with a fix, but it still needs to be tested at least a couple times before I release it, until then I doubt anyone will encounter the error, but just know that it does exist (if you think something isn't working as it should).

I am also considering modifying the addsyndrome script to specify the syndromes you wish to add. For example, the current system requires you to have one inorganic for each one syndrome, but this means that you will need many inorganics just to specify syndromes. A work around for this would be defining several syndromes in one inorganic, and then applying the syndromes via INORGANIC_TOKEN/SYN_NAME

So instead of having three different inorganics for three different syndromes
addsyndrome SYNDROME_FIRE_BURN \UNIT_ID
addsyndrome SYNDROME_FIRE_IMMOLATE \UNIT_ID
addsyndrome SYNDROME_FIRE_SEAR \UNIT_ID

You would have three different syndromes in one inorganic
addsyndrome SYNDROME_FIRE/BURN \UNIT_ID
addsyndrome SYNDROME_FIRE/IMMOLATE \UNIT_ID
addsyndrome SYNDROME_FIRE/SEAR \UNIT_ID

This would limit the number of DFHack related inorganics. You could even, theoretically (as long as there are no in game limits), place all syndromes in a single inorganic, although that might make your raws hard to navigate.

And lastly, here is a preview of a couple of my sample interactions. All of the following should be applied with a USAGE_HINT:ATTACK.

Up first, a self only targeting interaction which adds a syndrome. You can see that there are various checks made.
Code: (Self only combat buff) [Select]
[SYNDROME]
[SYN_NAME:blink]
[SYN_CLASS:\COMMAND]
[SYN_CLASS:spells/wrapper]
[SYN_CLASS:script@spells/addsyndrome]
[SYN_CLASS:args@SYNDROME_ARCANE_TIME_BLINK;!UNIT]
[SYN_CLASS:self@true]
[SYN_CLASS:iclass@TIME3;TIME4;MAGIC_IMMUNE;ARCANE_IMMUNE]
[SYN_CLASS:isyndrome@MAGIC_IMMUNITY;TIMEWARD;ARCANEWARD]
[SYN_CLASS:relfect@REFLECT_TIME;REFLECT_ARCANE;REFLECT_ALL]
[SYN_CLASS:silence@SILENCE_TIME;SILENCE_ARCANE;SILENCE_ALL]
[SYN_CLASS:verbose@true]
[CE_SKILL_ROLL_ADJUST:PERC:100:PERC_ON:0:START:0:END:0]

And here is a self only interaction which changes the material of the casters weapon for 1 day;
Code: (Self only Imbue Weapon) [Select]
[SYNDROME]
[SYN_NAME:arcane weapon]
[SYN_CLASS:\COMMAND]
[SYN_CLASS:spells/wrapper]
[SYN_CLASS:script@spells/imbueitem]
[SYN_CLASS:args@!SELF;weapon;SPELL_MATERIAL_ARCANE;3600]
[SYN_CLASS:iclass@MAGIC_IMMUNE;ARCANE_IMMUNE;MAGIC_RESIST;MYSTIC1;MYSTIC2;MYSTIC3;MYSTIC4]
[SYN_CLASS:isyndrome@MAGIC_IMMUNITY;RESIST_MAGIC;RESIST_ARCANE;ARCANEWARD;MYSTICWARD]
[SYN_CLASS:relfect@REFLECT_MYSTIC;REFLECT_ARCANE;REFLECT_ALL]
[SYN_CLASS:silence@SILENCE_MYSTIC;SILENCE_ARCANE;SILENCE_ALL]
[SYN_CLASS:verbose@true]
[CE_SKILL_ROLL_ADJUST:PERC:100:PERC_ON:0:START:0:END:0]

Up next is a friendly only (without self) targeting interaction that adds a syndrome. Here the silence check and the iclass, isyndrome, and reflect checks take place on different units;
Code: (Friendly target combat buff) [Select]
[SYNDROME]
[SYN_NAME:haste]
[SYN_CLASS:\COMMAND]
[SYN_CLASS:spells/wrapper]
[SYN_CLASS:script@spells/addsyndrome]
[SYN_CLASS:args@SYNDROME_ARCANE_TIME_HASTE;!UNIT]
[SYN_CLASS:self@true]
[SYN_CLASS:center@false]
[SYN_CLASS:target@civ]
[SYN_CLASS:maxtargets@1]
[SYN_CLASS:radius@10/10/10]
[SYN_CLASS:iclass@TIME2;TIME3;TIME4;MAGIC_IMMUNE;MAGIC_RESIST;ARCANE_RESIST;ARCANE_IMMUNE]
[SYN_CLASS:isyndrome@MAGIC_IMMUNITY;RESIST_MAGIC;TIMEWARD;ARCANEWARD]
[SYN_CLASS:relfect@REFLECT_TIME;REFLECT_ARCANE;REFLECT_ALL]
[SYN_CLASS:silence@SILENCE_TIME;SILENCE_ARCANE;SILENCE_ALL]
[SYN_CLASS:verbose@true]
[CE_SKILL_ROLL_ADJUST:PERC:100:PERC_ON:0:START:0:END:0]

Similarly, a friendly target interaction (including self) which adds a syndrome;
Code: (Friendly+Self target Combat Buff) [Select]
[SYNDROME]
[SYN_NAME:magic immunity]
[SYN_CLASS:\COMMAND]
[SYN_CLASS:spells/wrapper]
[SYN_CLASS:script@spells/addsyndrome]
[SYN_CLASS:args@SYNDROME_ARCANE_AEGIS_MAGIC_IMMUNITY;!UNIT]
[SYN_CLASS:self@true]
[SYN_CLASS:target@civ]
[SYN_CLASS:maxtargets@1]
[SYN_CLASS:radius@10/10/10]
[SYN_CLASS:iclass@MAGIC_IMMUNE;ARCANE_IMMUNE]
[SYN_CLASS:isyndrome@MAGIC_IMMUNITY]
[SYN_CLASS:silence@SILENCE_AEGIS;SILENCE_ARCANE;SILENCE_ALL]
[SYN_CLASS:verbose@true]
[CE_SKILL_ROLL_ADJUST:PERC:100:PERC_ON:0:START:0:END:0]

Now, switching gears, an enemy only interaction which adds a syndrome. Here there doesn't need to be any specification of target, since the ingame USAGE_HINT rules already provide the specification;
Code: (Enemy target Combat Debuff) [Select]
[SYNDROME]
[SYN_NAME:slow]
[SYN_CLASS:\COMMAND]
[SYN_CLASS:spells/wrapper]
[SYN_CLASS:script@spells/addsyndrome]
[SYN_CLASS:args@SYNDROME_ARCANE_TIME_SLOW;!UNIT]
[SYN_CLASS:iclass@TIME2;TIME3;TIME4;MAGIC_IMMUNE;MAGIC_RESIST;ARCANE_RESIST;ARCANE_IMMUNE]
[SYN_CLASS:isyndrome@MAGIC_IMMUNITY;RESIST_MAGIC;TIMEWARD;ARCANEWARD]
[SYN_CLASS:relfect@REFLECT_TIME;REFLECT_ARCANE;REFLECT_ALL]
[SYN_CLASS:silence@SILENCE_TIME;SILENCE_ARCANE;SILENCE_ALL]
[SYN_CLASS:verbose@true]
[CE_SKILL_ROLL_ADJUST:PERC:100:PERC_ON:0:START:0:END:0]

And lastly, an example of a ranged attack interaction.
Code: (Ranged Attack) [Select]
[SYNDROME]
[SYN_NAME:arcane missle]
[SYN_CLASS:\COMMAND]
[SYN_CLASS:spells/wrapper]
[SYN_CLASS:script@spells/projectile]
[SYN_CLASS:args@unit;!UNIT;AMMO/ITEM_AMMO_ARROWM_MAGIC;SPELL_MATERIAL_ARCANE;shoot;2/65/50/30/1;!SELF]
[SYN_CLASS:iclass@MAGIC_IMMUNE;ARCANE_IMMUNE;MAGIC_RESIST;MYSTIC1;MYSTIC2;MYSTIC3;MYSTIC4]
[SYN_CLASS:isyndrome@MAGIC_IMMUNITY;RESIST_MAGIC;RESIST_ARCANE;ARCANEWARD;MYSTICWARD]
[SYN_CLASS:relfect@REFLECT_MYSTIC;REFLECT_ARCANE;REFLECT_ALL]
[SYN_CLASS:silence@SILENCE_MYSTIC;SILENCE_ARCANE;SILENCE_ALL]
[SYN_CLASS:verbose@true]
[CE_SKILL_ROLL_ADJUST:PERC:100:PERC_ON:0:START:0:END:0]

As you can see I have broken down the interactions into various types and categories. For now there are;
Code: (USAGE_HINT:ATTACK) [Select]
Combat Buff (Self Only)
Combat Buff (Friendly Only)
Combat Buff (Friendly + Self)
Combat Debuff (Enemy Only)
Combat Debuff (All)
Ranged Attack
Melee Attack
Summon
Map Change
And
Code: (USAGE_HINT:GREETING) [Select]
Buff (Self Only)
Buff (Friendly Only)
Buff (Friendly + Self)
Summon
Map Change

I am sure there will be more categories and types as I move through my list of spells, but with 40 done so far, those are all the types I have. I will be releasing the actual raws when they are all done (and not just copies of parts of the interactions), along with suggested CAN_DO_INTERACTION snippets, so that people can see what I am thinking when I am making them.
Code: (For Example) [Select]
[INTERACTION:SPELL_ARCANE_MYSTIC_ARCANE_MISSLE]
* Shoot an arrow made of arcane material
* Ranged Attack
* Targets enemies only
-CAN_DO_INTERACTION:SPELL_ARCANE_MYSTIC_ARCANE_MISSLE--
-CDI:ADV_NAME:Arcane Missle--
-CDI:USAGE_HINT:ATTACK--
-CDI:TARGET:C:LINE_OF_SIGHT--
-CDI:TARGET_RANGE:C:15--
-CDI:MAX_TARGET_NUMBER:C:1--
-CDI:VERB:casts arcane missle:arcane missle casted:arcane missled--
-CDI:WAIT_PERIOD:1000--
[I_SOURCE:CREATURE_ACTION]
[I_TARGET:C:CREATURE]
[IT_LOCATION:CONTEXT_CREATURE]
[IT_CANNOT_TARGET_IF_ALREADY_AFFECTED]
[IT_MANUAL_INPUT:target]
[I_EFFECT:ADD_SYNDROME]
[IE_TARGET:C]
[IE_IMMEDIATE]
[SYNDROME]
[SYN_NAME:arcane missle]
[SYN_CLASS:\COMMAND]
[SYN_CLASS:spells/wrapper]
[SYN_CLASS:script@spells/projectile]
[SYN_CLASS:args@unit;!UNIT;AMMO/ITEM_AMMO_ARROWM_MAGIC;SPELL_MATERIAL_ARCANE;shoot;2/65/50/30/1;!SELF]
[SYN_CLASS:iclass@MAGIC_IMMUNE;ARCANE_IMMUNE;MAGIC_RESIST;MYSTIC1;MYSTIC2;MYSTIC3;MYSTIC4]
[SYN_CLASS:isyndrome@MAGIC_IMMUNITY;RESIST_MAGIC;RESIST_ARCANE;ARCANEWARD;MYSTICWARD]
[SYN_CLASS:relfect@REFLECT_MYSTIC;REFLECT_ARCANE;REFLECT_ALL]
[SYN_CLASS:silence@SILENCE_MYSTIC;SILENCE_ARCANE;SILENCE_ALL]
[SYN_CLASS:verbose@true]
[CE_SKILL_ROLL_ADJUST:PERC:100:PERC_ON:0:START:0:END:0]
Logged
Pages: 1 ... 12 13 [14] 15 16 ... 42