Page 375 of 396
Re: Ask a simple question, get a simple answer
Posted: Wed Mar 10, 2021 2:22 pm
by Isaac
The object's offset vector could be used for this, or even the 2D subtileOffset.
This moves an object along a 2D x & y grid in a cell, but it's not a function of the projectile component. You would have to obtain the projectile object ID.
*This is easier if using a script instead of a spawner object.
Example: place in script_entity, and connect a timer; timer.facing is the direction of projectile.
Code: Select all
function shoot(self)
local fireball = self.go:spawn("fireball_small")
fireball.projectile:setIgnoreEntity(party)
fireball:setWorldPositionY(1.5)
fireball:setSubtileOffset(.8,-.5)
end
kelly1111 wrote: ↑Wed Mar 10, 2021 12:50 pmI need a particle that travels close to the wall when fired from a spawner.
How exactly is this to be used? If it's a visual effect, then a custom animation (via Blender) would give more control.
Re: Ask a simple question, get a simple answer
Posted: Wed Mar 10, 2021 6:59 pm
by kelly1111
Thanks Isaac. I have made a wall object with a long indent in it. I want the projectile / lightsource to travel along that path creating an alternative moving light source effect. But I am now wondering if this will work on a wall object because of the projectile collider component....
I got it working the way I want it
Re: Ask a simple question, get a simple answer
Posted: Wed Mar 10, 2021 9:09 pm
by Isaac
kelly1111 wrote: ↑Wed Mar 10, 2021 6:59 pm
I got it working the way I want it
Components can be removed if they are a problem.
The object's position can be determined (or just influenced) with scripting.
But for what you might be doing, a custom animated wall asset could be the best.
Check out the Dark Seal and the in the
ORRR3 mod.
Re: Ask a simple question, get a simple answer
Posted: Fri Mar 12, 2021 11:15 am
by Lorial
How can you create a nightsight potion that casts the light spell while consuming the item (in hand and inventory)?
My version is crap as it requires the necessary skill of the spell and teaches the spell which is added to the trait window. Other versions with "primaryAction" let me use it indefinitely (unless I used charges) or only turned into an empty flask when used from within the inventory. Usually I used "setCondition" for these purposes, but can a light spell be a condition?!
Code: Select all
defineObject{
name = "flask_light",
baseObject = "base_item",
components = {
{
class = "Model",
model = "assets/models/items/flask.fbx",
},
{
class = "Item",
uiName = "Nightsight Potion",
gfxIndex = 144,
weight = 0.3,
traits = { "potion" },
ConvertToItemOnImpact = "dispel_blast",
},
{
class = "UsableItem",
sound = "consume_potion",
-- emptyItem = "flask",
onUseItem = function(self, champion)
if champion:isAlive() then
champion:castSpell(25)
end
end,
},
},
}
Re: Ask a simple question, get a simple answer
Posted: Fri Mar 12, 2021 11:18 pm
by ratman
You could define a new spell that has no requirements and is hidden.
Code: Select all
defineSpell{
name = "light_potion_spell",
uiName = "Light",
gesture = 12321,
manaCost = 0,
onCast = "light",
skill = "concentration",
--requirements = { "concentration", 2 },
icon = 58,
spellIcon = 18,
description = "Conjures a dancing ball of light that illuminates your path.",
hidden = true,
}
Re: Ask a simple question, get a simple answer
Posted: Sat Mar 13, 2021 6:23 am
by Isaac
The custom spell (with impossible gesture) would certainly do it, but the nature of the effect is well suited to a being a character condition. As a condition, it can be easily applied to any champion, and effectively handles itself after that; it can also be detected (per champion). Since this is a potion, several PCs might be using them at the same time, whether deliberately or accidental. So the effect should take duplicates into account.
A condition automatically applies an effect icon to the champion's portrait for its duration, and has built in functions to place start, middle, and ending code for both the principle effect, and any cosmetic polishing to it.
Code: Select all
--Place this in one of the starting scripts; eg. spells.lua or other
defineCondition{
name = "nightvision",
uiName = "Nightvision",
description = "Temporarily enhances the ability to see in the dark.",
icon = 7, --[icon & iconAtlas can reference a custom image for the portrait-overlay]--
iconAtlas = "assets/textures/gui/conditions.tga", --
beneficial = true,
harmful = false,
tickInterval = .05,
onStart = function(self, champion)
if not party.nightsight then party:createComponent("Light", "nightsight")
party.nightsight:setOffset(vec(0,1.3,-1)) ---------------[Position of light source]--
party.nightsight:setType("spot")
party.nightsight:setSpotAngle(117)
party.nightsight:setSpotSharpness(0)
party.nightsight:setRange(9)
end
self:setDuration(60) -----------------------------------[Default duration of nighvision effect]--
playSound("spell_out_of_energy")
end,
onStop = function(self, champion)
--OPTIONAL message
hudPrint(champion:getName():capitalize().."\'s nightvision has expired")
--
local count = 0
for x = 1, 4 do
if party.party:getChampion(x):hasCondition("nightvision") then
count = count + 1
end
end
if count < 2 then party:removeComponent("nightsight") end
playSound("spell_expires")
end,
onTick = function(self, champion)
local count = 0
for x = 1, 4 do
if party.party:getChampion(x):hasCondition("nightvision") then
count = count + 1
end
end
if count < 2 then
if Config.getRenderingQuality()>1 then
if party.nightsight then
party.nightsight:setColor(vec(5,20,7)) --------------------------------[green tint]--
local jitter = math.abs(math.sin(self:getDuration()*.5)*2) ----[variable attenuation of the light]--
party.nightsight:setBrightness(jitter)
end
end
end
end,
}
defineObject{
name = "potion_nightvision",
baseObject = "base_item",
components = {
{
class = "Model",
model = "assets/models/items/flask.fbx",
},
{
class = "Item",
uiName = "Nightvision Potion",
gfxIndex = 146,
weight = 0.3,
stackable = true,
traits = { "potion" },
},
{
class = "UsableItem",
sound = "consume_potion",
onUseItem = function(self, champion)
champion:setCondition('nightvision')
end,
},
},
}
Re: Ask a simple question, get a simple answer
Posted: Sat Mar 13, 2021 8:03 am
by Lorial
Thanks a bunch for that, guys.
Just had the same idea with no requirements today, the gesture is a nice addition indeed.
I have used numerous custom conditions for 1, 2 or all 4 chars, but I never managed to connect a consumable item with casting a spell. Creating complex conditions that replicate a spell is way out of my league. Time to play around with these a bit and see what sticks.
Re: Ask a simple question, get a simple answer
Posted: Sun Mar 14, 2021 11:10 pm
by Eleven Warrior
Isaac wrote: ↑Sat Mar 13, 2021 6:23 am
The custom spell (with impossible gesture) would certainly do it, but the nature of the effect is well suited to a being a character condition. As a condition, it can be easily applied to any champion, and effectively handles itself after that; it can also be detected (per champion). Since this is a potion, several PCs might be using them at the same time, whether deliberately or accidental. So the effect should take duplicates into account.
A condition automatically applies an effect icon to the champion's portrait for its duration, and has built in functions to place start, middle, and ending code for both the principle effect, and any cosmetic polishing to it.
Code: Select all
--Place this in one of the starting scripts; eg. spells.lua or other
defineCondition{
name = "nightvision",
uiName = "Nightvision",
description = "Temporarily enhances the ability to see in the dark.",
icon = 7, --[icon & iconAtlas can reference a custom image for the portrait-overlay]--
iconAtlas = "assets/textures/gui/conditions.tga", --
beneficial = true,
harmful = false,
tickInterval = .05,
onStart = function(self, champion)
if not party.nightsight then party:createComponent("Light", "nightsight")
party.nightsight:setOffset(vec(0,1.3,-1)) ---------------[Position of light source]--
party.nightsight:setType("spot")
party.nightsight:setSpotAngle(117)
party.nightsight:setSpotSharpness(0)
party.nightsight:setRange(9)
end
self:setDuration(60) -----------------------------------[Default duration of nighvision effect]--
playSound("spell_out_of_energy")
end,
onStop = function(self, champion)
--OPTIONAL message
hudPrint(champion:getName():capitalize().."\'s nightvision has expired")
--
local count = 0
for x = 1, 4 do
if party.party:getChampion(x):hasCondition("nightvision") then
count = count + 1
end
end
if count < 2 then party:removeComponent("nightsight") end
playSound("spell_expires")
end,
onTick = function(self, champion)
local count = 0
for x = 1, 4 do
if party.party:getChampion(x):hasCondition("nightvision") then
count = count + 1
end
end
if count < 2 then
if Config.getRenderingQuality()>1 then
if party.nightsight then
party.nightsight:setColor(vec(5,20,7)) --------------------------------[green tint]--
local jitter = math.abs(math.sin(self:getDuration()*.5)*2) ----[variable attenuation of the light]--
party.nightsight:setBrightness(jitter)
end
end
end
end,
}
defineObject{
name = "potion_nightvision",
baseObject = "base_item",
components = {
{
class = "Model",
model = "assets/models/items/flask.fbx",
},
{
class = "Item",
uiName = "Nightvision Potion",
gfxIndex = 146,
weight = 0.3,
stackable = true,
traits = { "potion" },
},
{
class = "UsableItem",
sound = "consume_potion",
onUseItem = function(self, champion)
champion:setCondition('nightvision')
end,
},
},
}
Could you do the same for a fireball potion to Issac? Player drinks potion and launches a fireball.
Re: Ask a simple question, get a simple answer
Posted: Mon Mar 15, 2021 12:21 am
by Zo Kath Ra
Eleven Warrior wrote: ↑Sun Mar 14, 2021 11:10 pm
Could you do the same for a fireball potion to Issac? Player drinks potion and launches a fireball.
Potion of Fire Breathing?
Re: Ask a simple question, get a simple answer
Posted: Mon Mar 15, 2021 8:05 am
by Eleven Warrior
yeah