ServUO Version
Publish 57
Ultima Expansion
Endless Journey
With the UoFiddler program, I extracted the Lightning Effect in Gumps into a bmp file and created the Effect with AnimData to demonstrate magic, but the location of lightning falls is different from the existing Lightning. Is there a way to adjust the location of this lightning strike? And one more question Rain or snow falls due to weather effects in the game. Could you tell me where I should modify to change the animation of rain or snow?screenshot_2023-06-17_11-23-04.pngscreenshot_2023-06-17_11-23-15.png
 
Rain and snow are hardcoded in client. I don't think there is a graphic in art that makes snow or rain droplets. Your position of lightning on the bitmap decides where it shows. Compare both lightnings and see how it looks. You can also use land tiles as reference. You can setup something similar like in this tutotorial
To view this content we will need your consent to set third party cookies.
For more detailed information, see our cookies page.
. Positioning is just the bitmap tiles on the grid.
 
Rain and snow are hardcoded in client. I don't think there is a graphic in art that makes snow or rain droplets. Your position of lightning on the bitmap decides where it shows. Compare both lightnings and see how it looks. You can also use land tiles as reference. You can setup something similar like in this tutotorial
To view this content we will need your consent to set third party cookies.
For more detailed information, see our cookies page.
. Positioning is just the bitmap tiles on the grid.
Thank you very much for your reply. It helped me a lot I will study hard while watching the video. Thank you!
 
Im assuming you changed m.BoltEffect( 0 ); in lightning spell to m.FixedParticles( if using art animation. on flamestrike its m.FixedParticles( 0x3709, 10, 30, 5052, EffectLayer.LeftFoot ); is where it says leftfoot changed to head? that might change the position of your spell effect. Your bitmap seems to be fine just looks like the effectlayer is set to a foot or something.
 
Im assuming you changed m.BoltEffect( 0 ); in lightning spell to m.FixedParticles( if using art animation. on flamestrike its m.FixedParticles( 0x3709, 10, 30, 5052, EffectLayer.LeftFoot ); is where it says leftfoot changed to head? that might change the position of your spell effect. Your bitmap seems to be fine just looks like the effectlayer is set to a foot or something.
using System;
using System.Collections;
using Server.Items;
using Server.Misc;
using Server.Mobiles;
using Server.Targeting;
using System.Collections.Generic;
using System.Linq;
using Server.Multis;
using Server.Regions;


namespace Server.Spells.Eighth
{
public class LightningStromSpell : MagerySpell
{
public override DamageType SpellDamageType { get { return DamageType.SpellAOE; } }

private static readonly SpellInfo m_Info = new SpellInfo(
"Lightning Strom", "Lightning Strom",
269,
9050,
false,
Reagent.Bloodmoss,
Reagent.MandrakeRoot,
Reagent.SpidersSilk,
Reagent.SulfurousAsh);
public LightningStromSpell(Mobile caster, Item scroll)
: base(caster, scroll, m_Info)
{
}

public override SpellCircle Circle
{
get
{
return SpellCircle.Eighth;
}
}
public override double RequiredSkill
{
get
{
return 150.0;
}
}
public override bool DelayedDamage
{
get
{
return false;
}
}
public override void OnCast()
{
Caster.Target = new InternalTarget(this);
}

public void Target(IPoint3D p)
{
if (!Caster.CanSee(p))
{
Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (SpellHelper.CheckTown(p, Caster) && CheckSequence())
{
SpellHelper.Turn(Caster, p);

if (p is Item)
p = ((Item)p).GetWorldLocation();

var targets = AcquireIndirectTargets(p, 10).ToList();
var count = Math.Max(1, targets.Count);

foreach (var dam in targets)
{
var id = dam;
var m = id as Mobile;
double damage;

if (Core.AOS)
damage = GetNewAosDamage(150, 1, 5, id is PlayerMobile, id);
else
damage = Utility.Random(70, 80);


if (!Core.AOS && m != null && CheckResisted(m))
{
damage *= 0.5;

m.SendLocalizedMessage(501783); // You feel yourself resisting magical energy.
}

Mobile source = Caster;
SpellHelper.CheckReflect((int)Circle, ref source, ref id, SpellDamageType);

if (m != null)
{
damage *= GetDamageScalar(m);
}
if (m != null)
{
m.FixedParticles(0x3BCE, 10, 10, 5052, 0x256, 3, EffectLayer.Head);
}




Caster.DoHarmful(id);
SpellHelper.Damage(this, id, damage, 0, 0, 0, 0, 100);
}

ColUtility.Free(targets);
}

FinishSequence();
}

public class InternalTarget : Target
{
public readonly LightningStromSpell m_Owner;
public InternalTarget(LightningStromSpell owner)
: base(Core.ML ? 10 : 12, true, TargetFlags.None)
{
m_Owner = owner;
}

protected override void OnTarget(Mobile from, object o)
{
IPoint3D p = o as IPoint3D;

if (p != null)
m_Owner.Target(p);
}

protected override void OnTargetFinish(Mobile from)
{
m_Owner.FinishSequence();
}
}
}
}
Thank you for your answer.
This is the contents of the cs file of my order. It is set to head. Is there something wrong?
 
ok then i would in the art files raise the actaul art up in the frame. Leave it the same size bitmap just move the lightning up abit and tes till you get it to correct height is how i would do it. Looks like the center of it is dead on just the height. You might lose some of the bolt at the top but just open up in paint or whatever you use select all and just move bolt up in frame for each art frame and save and test
 
ok then i would in the art files raise the actaul art up in the frame. Leave it the same size bitmap just move the lightning up abit and tes till you get it to correct height is how i would do it. Looks like the center of it is dead on just the height. You might lose some of the bolt at the top but just open up in paint or whatever you use select all and just move bolt up in frame for each art frame and save and test
Thank you for your answer. I'll fix it with the paint program. It's been a lot of help. Thank you so much!!
 
Back