I'm curious (and lazy): can you actually pick up the shot projectiles afterwards?Blichew wrote:Fan of Knives
Credits go to JohnWordsworth who had a problem with this one
spellcraft level and/or mana cost need to be adjustedSpoilerShowCode: Select all
defineSpell{ name = "knives", uiName = "Fan of Knives", skill = "spellcraft", level = 1, runes = "AC", manaCost = 5, onCast = function(champ, x, y, direction, skill) local dx,dy = getForward(party.facing) local x,y = party.x + dx, party.y + dy if party.facing == 0 or party.facing == 2 then for modif = -0.5,0.5,0.1 do shootProjectile("throwing_knife", party.level, x+modif, y, party.facing, 12+(modif*2), 1.5, 1, 0, 0, 0, 1, false, true) end else for modif = -0.5,0.5,0.1 do shootProjectile("throwing_knife", party.level, x, y+modif, party.facing, 12+(modif*2), 1.5, 1, 0, 0, 0, 1, false, true) end end end }
New Spells >> show them off here
- Montis
- Posts: 340
- Joined: Sun Apr 15, 2012 1:25 am
- Location: Grimrock II 2nd playthrough (hard/oldschool)
Re: New Spells >> show them off here
Re: New Spells >> show them off here
I tested this and you can't.Montis wrote:I'm curious (and lazy): can you actually pick up the shot projectiles afterwards?Blichew wrote:Fan of Knives
Credits go to JohnWordsworth who had a problem with this one
spellcraft level and/or mana cost need to be adjustedSpoilerShowCode: Select all
defineSpell{ name = "knives", uiName = "Fan of Knives", skill = "spellcraft", level = 1, runes = "AC", manaCost = 5, onCast = function(champ, x, y, direction, skill) local dx,dy = getForward(party.facing) local x,y = party.x + dx, party.y + dy if party.facing == 0 or party.facing == 2 then for modif = -0.5,0.5,0.1 do shootProjectile("throwing_knife", party.level, x+modif, y, party.facing, 12+(modif*2), 1.5, 1, 0, 0, 0, 1, false, true) end else for modif = -0.5,0.5,0.1 do shootProjectile("throwing_knife", party.level, x, y+modif, party.facing, 12+(modif*2), 1.5, 1, 0, 0, 0, 1, false, true) end end end }
They also don't do very much damage... it was doing a bunch of zeros to skeletons and maybe 0-2s against snails.
Puzzle Frameworks - http://www.grimrock.net/forum/viewtopic.php?f=14&t=4564
Magic Pack - https://www.nexusmods.com/grimrock/mods/70
Area of Effect Spell System - http://www.grimrock.net/forum/viewtopic ... 150#p44382
Magic Pack - https://www.nexusmods.com/grimrock/mods/70
Area of Effect Spell System - http://www.grimrock.net/forum/viewtopic ... 150#p44382
Re: New Spells >> show them off here
Caliginous Curse
Area effect curse, hits the squares next to you. Costs HP to cast, damage varies from little to huge, low mana cost.
Tried to amplify monsters shadows by creating a light below them as they are hit. Unfortunately, FX lights don't give me as much control as if I spawned a particle_effect below them so I might work in that.
Might also try to make a poison effect where the cursed monsters gradually lose HP.
Does anyone know the name of the darkness spell? I want it to be cast simultaneously but only last for a few seconds.
Area effect curse, hits the squares next to you. Costs HP to cast, damage varies from little to huge, low mana cost.
Tried to amplify monsters shadows by creating a light below them as they are hit. Unfortunately, FX lights don't give me as much control as if I spawned a particle_effect below them so I might work in that.
Might also try to make a poison effect where the cursed monsters gradually lose HP.
Does anyone know the name of the darkness spell? I want it to be cast simultaneously but only last for a few seconds.
Code: Select all
defineObject{
name = "curse_fire",
class = "FX",
editorIcon = 88,
}
defineSpell{
name = "curse",
uiName = "Caliginous Curse",
skill = "spellcraft",
level = 1,
runes = "DEF",
manaCost = 10,
onCast = function(champ, x, y, direction, skill)
hudPrint(champ:getName().." pulls life force to strengthen the spell")
damageTile(party.level, party.x, party.y, party.facing, 1, "physical", (5+(skill/2)))
local newy = party.y
local newx = party.x
local north = party.y -1
local west = party.x -1
local south = party.y +1
local east = party.x +1
damageTile(party.level, newx, north, party.facing, 1, "physical", math.random(1,10)*(skill*2))
damageTile(party.level, west, newy, party.facing, 1, "physical", math.random(1,10)*(skill*2))
damageTile(party.level, newx, south, party.facing, 1, "physical", math.random(1,10)*(skill*2))
damageTile(party.level, east, newy, party.facing, 1, "physical", math.random(1,10)*(skill*2))
party:playScreenEffect("party_crush")
spawn("curse_fire", party.level, party.x, party.y-1, party.facing, "x11")
spawn("curse_fire", party.level, party.x+1, party.y, party.facing, "x22")
spawn("curse_fire", party.level, party.x, party.y+1, party.facing, "x33")
spawn("curse_fire", party.level, party.x-1, party.y, party.facing, "x44")
x11:setLight(1,1,1,100,5,2,true)
x22:setLight(1,1,1,100,5,2,true)
x33:setLight(1,1,1,100,5,2,true)
x44:setLight(1,1,1,100,5,2,true)
end,
}
- JohnWordsworth
- Posts: 1397
- Joined: Fri Sep 14, 2012 4:19 pm
- Location: Devon, United Kingdom
- Contact:
Re: New Spells >> show them off here
It's easy to modify the 'fan of knives' so that you can pickup the knives afterwards, and so that it does more damage! In my spell compendium, I will be using the following parameters for shootProjectile,Grimwold wrote:Montis wrote:I tested this and you can't.Blichew wrote:Fan of Knives
I'm curious (and lazy): can you actually pick up the shot projectiles afterwards?
They also don't do very much damage... it was doing a bunch of zeros to skeletons and maybe 0-2s against snails.
Code: Select all
shootProjectile("throwing_knife", party.level, x, y+modif, party.facing, 12+(modif*2), 1.5, 1, 0, 0, 0, 20, party, false)
Code: Select all
for modif = -0.5,0.5,0.2 do
My Grimrock Projects Page with links to the Grimrock Model Toolkit, GrimFBX, Atlas Toolkit, QuickBar, NoteBook and the Oriental Weapons Pack.
Re: New Spells >> show them off here
Mine had a few 'placeholders' (like too low dmg and so on). Too bad there's no possibility to modify 3d offset to shoot let's say 3x3 knives or something like that. Nice addition would be reagent requirement. It should be easily doable:)
Re: New Spells >> show them off here
Major flaw: Characters are not receiving any EX with monsters killed by that spell.flatline wrote:Caliginous Curse
Minor flaw: No sound effect. From default sounds I think "poison_cloud" would be most suitable? It sounds sinister enough for a curse.
Actually the spell that creates five real daggers is a bit risky. Remember the guy who were carrying all legionary spears and shields through all the levels? His game lost stability with too many objects.JohnWordsworth wrote:It's easy to modify the Fan of Knives so that you can pickup the knives afterwards, and so that it does more damage! In my spell compendium, I will be using the following parameters for shootProjectile
Also, when I've cast that spell in corridor the rightmost dagger flew only one tile and fall to the ground.
Re: New Spells >> show them off here
Thanks, didn't think about the XP thing. Might have to change it to 4 burst spell effects instead.Merethif wrote:Major flaw: Characters are not receiving any EX with monsters killed by that spell.flatline wrote:Caliginous Curse
Minor flaw: No sound effect. From default sounds I think "poison_cloud" would be most suitable? It sounds sinister enough for a curse.
Actually the spell that creates five real daggers is a bit risky. Remember the guy who were carrying all legionary spears and shields through all the levels? His game lost stability with too many objects.JohnWordsworth wrote:It's easy to modify the Fan of Knives so that you can pickup the knives afterwards, and so that it does more damage! In my spell compendium, I will be using the following parameters for shootProjectile
Also, when I've cast that spell in corridor the rightmost dagger flew only one tile and fall to the ground.
*EDIT*
Forgot about the bitfield part of damageTile command, since every hero contributes HP to the spell, everyone gets XP now. I reckon I could use champion.GetOrdinnal to isntruct it to only award the caster with XP but this works fine as it is.
Last edited by flatline on Sat Oct 06, 2012 8:59 pm, edited 1 time in total.
Re: New Spells >> show them off here
If you want to create knives with fan of knives you can use math random function to create a knife for one 'spawn' line, not all of them, or with a chance like 15% or so. This shouldn't unbalance thr mod too much
Re: New Spells >> show them off here
I'm super stoked about this one as it took a lot of scripting to get it work, but the effect is cool.
Push Monster
An air magic spell.. currently level 0 with a mana cost of 20 and two runes. Feel free to tweak it how you want.
The basic idea is that the monster directly in front of you is teleported one space away from the party in the same direction. This gives you enough time to either close a door, or sneak forward and potentially get out of a dead end. Because of the complex nature of the spell I have built it up using functions, so there is a minimal amount to put in spells.lua, a script_entity that needs placing in the editor and a custom monster to add to monsters.lua.
spells.lua
monsters.lua
script entity called pushback_spell_script
credits:
To test for a valid destination, I used a bit of Edsploration's code from this thread:
viewtopic.php?f=14&t=3631
Optional Particle Effect
To use the optional particle effect you will need to uncomment the 3 lines relating to spawn FX in the script above and add the following to a particles.lua file
Make sure that you include an IMPORT for your particles.lua file in the init.lua file
Push Monster
An air magic spell.. currently level 0 with a mana cost of 20 and two runes. Feel free to tweak it how you want.
The basic idea is that the monster directly in front of you is teleported one space away from the party in the same direction. This gives you enough time to either close a door, or sneak forward and potentially get out of a dead end. Because of the complex nature of the spell I have built it up using functions, so there is a minimal amount to put in spells.lua, a script_entity that needs placing in the editor and a custom monster to add to monsters.lua.
spells.lua
Code: Select all
-- Monster Pushback Spell
defineSpell{
name = "pushback",
uiName = "Push Monster",
skill = "air_magic",
level = 0,
runes = "CF",
manaCost = 20,
onCast = function(caster, x, y, direction, skill)
return pushback_spell_script.pushbackSpell(caster,x,y,direction,skill)
end,
}
Code: Select all
cloneObject{
name = "teleport_probe",
baseObject = "snail",
}
script entity called pushback_spell_script
Code: Select all
function isInTable(table, element)
for _,value in pairs(table) do
if value == element then
return true
end
end
return false
end
function pushDestroy()
push_teleport:destroy()
push_timer:destroy()
end
function monsterThere(level,eggs,why)
local allMonsters = {"crab", "crowern", "goromorg", "green_slime", "herder", "herder_big", "herder_small", "herder_swarm", "ice_lizard", "ogre", "scavenger", "scavenger_swarm", "shrakk_torr", "skeleton_archer", "skeleton_archer_patrol", "skeleton_warrior", "snail", "spider", "uggardian", "warden", "wyvern"}
for i in entitiesAt(level,eggs,why) do
if isInTable(allMonsters,i.name)
then
return true
end
end
return false
end
function isValidTarget(L,X,Y)
spawn("spawner", L, X, Y, 0, "probe"):setSpawnedEntity("teleport_probe"):activate()
for j in entitiesAt(L,X,Y) do
if j.name == "teleport_probe"
then
probe:destroy()
j:destroy()
return true
end
end
probe:destroy()
return false
end
function pushbackSpell(caster,x,y,dir,skill)
local dx,dy = getForward(dir)
if monsterThere(party.level,x+dx,y+dy)
then
-- hudPrint("Monster!")
if isValidTarget(party.level,x+2*dx,y+2*dy)
then
hudPrint("PUSH!!!!")
-- spawn("fx", party.level, x+dx, y+dy, dir, "push_smoke")
-- :setParticleSystem("push_spell")
-- :translate(0, 0.5, 0)
playSoundAt("fireball_launch",party.level,x+dx,y+dy)
spawn("teleporter", party.level, x+dx,y+dy,dir, "push_teleport")
:setTeleportTarget(x+2*dx,y+2*dy, dir)
:setTriggeredByParty(false)
:setTriggeredByMonster(true)
:setTriggeredByItem(false)
:setChangeFacing(true)
:setInvisible(true)
:setSilent(true)
:setHideLight(true)
:setScreenFlash(false)
spawn("timer",party.level,x,y,dir,"push_timer")
:setTimerInterval(0.1)
:addConnector("activate", "pushback_spell_script", "pushDestroy")
:activate()
else
hudPrint("The spell fails because there is something in the way.")
end
else
hudPrint("The spell fails because there is no monster to push")
end
end
credits:
To test for a valid destination, I used a bit of Edsploration's code from this thread:
viewtopic.php?f=14&t=3631
Optional Particle Effect
To use the optional particle effect you will need to uncomment the 3 lines relating to spawn FX in the script above and add the following to a particles.lua file
Code: Select all
defineParticleSystem{
name = "push_spell",
emitters = {
{
spawnBurst = true,
maxParticles = 40,
sprayAngle = {0,100},
velocity = {0.8,2},
objectSpace = false,
texture = "assets/textures/particles/smoke_01.tga",
lifetime = {0.3,1},
color0 = {0.8, 0.9, 1.8},
opacity = 0.3,
fadeIn = 0.1,
fadeOut = 0.3,
size = {0.4, 0.7},
gravity = {0,0,0},
airResistance = 2,
rotationSpeed = 2,
blendMode = "Translucent",
},
-- glow
{
spawnBurst = true,
emissionRate = 1,
emissionTime = 0,
maxParticles = 1,
boxMin = {0,0,-0.1},
boxMax = {0,0,-0.1},
sprayAngle = {0,30},
velocity = {0,0},
texture = "assets/textures/particles/glow.tga",
lifetime = {0.5, 0.5},
colorAnimation = false,
color0 = {1.0, 1.0, 1.8},
opacity = 0.5,
fadeIn = 0.01,
fadeOut = 0.5,
size = {1, 1},
gravity = {0,0,0},
airResistance = 1,
rotationSpeed = 2,
blendMode = "Additive",
}
}
}
Last edited by Grimwold on Wed Oct 24, 2012 3:33 am, edited 4 times in total.
Puzzle Frameworks - http://www.grimrock.net/forum/viewtopic.php?f=14&t=4564
Magic Pack - https://www.nexusmods.com/grimrock/mods/70
Area of Effect Spell System - http://www.grimrock.net/forum/viewtopic ... 150#p44382
Magic Pack - https://www.nexusmods.com/grimrock/mods/70
Area of Effect Spell System - http://www.grimrock.net/forum/viewtopic ... 150#p44382
Re: New Spells >> show them off here
Amazing. I love your spells.Grimwold wrote: Push Monster
I'm not sure if above spell should work on Tentacles though?