Sign in to follow this  
Iberis

Have terraforming events been disabled on WU?

Recommended Posts

So I'm been playing around with the Rod of Eruption and the Wand of the Sea and neither will work. I've tried all kinds of settings but it is always the same.

 

The rod will plant and then will get up to the 50dmg message of.. [19:29:32] The rod of eruption starts to pulsate with a bright light, drawing from the ground.

 

But then when the next message is due to appear at 75dmg nothing happens. The damage continues to be taken until the item disappears. I've been trying to take a look at the code to see if there are any clues as to why it is not working since it is not just me but several people have been having this issue. It makes me wonder if it was disabled somehow?

 

private boolean pollHatching() {
        if(this.isAbility()) {
            if(this.isPlanted()) {
                if((int)this.damage == 3) {
                    Server.getInstance().broadCastMessage("The " + this.getName() + " starts to emanate a weird worrying sound.", this.getTileX(), this.getTileY(), this.isOnSurface(), 50);
                    this.setRarity((byte)2);
                }

                if((int)this.damage == 50) {
                    Server.getInstance().broadCastMessage("The " + this.getName() + " starts to pulsate with a bright light, drawing from the ground.", this.getTileX(), this.getTileY(), this.isOnSurface(), 50);
                    this.setRarity((byte)3);
                }

                if((int)this.damage == 75) {
                    Server.getInstance().broadCastMessage("The ground around " + this.getName() + " is shivering and heaving! Something big is going to happen here soon! You have to get far away!", this.getTileX(), this.getTileY(), this.isOnSurface(), 50);
                } else if((int)this.damage == 95) {
                    Server.getInstance().broadCastMessage(LoginHandler.raiseFirstLetter(this.getName() + " is now completely covered in cracks. Run!"), this.getTileX(), this.getTileY(), this.isOnSurface(), 50);
                } else if((int)this.damage == 99) {
                    Server.getInstance().broadCastMessage(LoginHandler.raiseFirstLetter(this.getNameWithGenus() + " is gonna explode! Too late to run..."), this.getTileX(), this.getTileY(), this.isOnSurface(), 20);
                }
            }
        } else if((int)this.damage == 85) {
            Server.getInstance().broadCastMessage("Cracks are starting to form on " + this.getNameWithGenus() + ".", this.getTileX(), this.getTileY(), this.isOnSurface(), 20);
        } else if((int)this.damage == 95) {
            Server.getInstance().broadCastMessage(LoginHandler.raiseFirstLetter(this.getNameWithGenus() + " is now completely covered in cracks."), this.getTileX(), this.getTileY(), this.isOnSurface(), 20);
        } else if((int)this.damage == 99) {
            Server.getInstance().broadCastMessage(LoginHandler.raiseFirstLetter(this.getNameWithGenus() + " stirs as something emerges from it!"), this.getTileX(), this.getTileY(), this.isOnSurface(), 20);
        }

        return this.setDamage(this.damage + 1.0F);
    }

It is when it gets to

if((int)this.damage == 75) {

That the code just seems to stop working. The code for the actual terraforming events is is the TerraformingTask.class

I have also tried other things like making a focus zone and then changing it in the database to focuszone 1  (which is a volcano). That didn't work either :(

 

Share this post


Link to post
Share on other sites

I've spawned a couple of volcanos on my server using the Rod Of Eruption, as well as the water terraforming event from the Wand Of Seas.

 

If they made a change to Rod of Eruption, it was recent because I have spawned them before. I will look into it.

Edited by WesncIsMe

Share this post


Link to post
Share on other sites

I noticed this as well, I am not sure which update broke it or why it is broken. Those else if's look wrong, and I don't see it triggering an actual volcano creation only sending messages....

Share this post


Link to post
Share on other sites

Yeah I've heard that it worked before one of the newer updates.

 

We have noticed that after dmg71 it is becoming unplanted, not sure if that has anything to do with it?

 

Me and some of my friends are going to keep looking into it and see if we can't fix this for everyone.

Share this post


Link to post
Share on other sites

Oh Xyp, this is the trigger for the terraforming event further down the code.. the bit that checks to see if the item id is 1009 is the RoE when it checks the decay.

 

final boolean checkDecay() {
    if(this.isHugeAltar()) {
        return false;
    } else if(this.qualityLevel > 0.0F && this.damage < 100.0F) {
        return false;
    } else {
        boolean decayed = true;
        if(this.ownerId != -10L) {
            Creature task = null;

            try {
                task = Server.getInstance().getCreature(this.getOwnerId());

                try {
                    Action changes = task.getCurrentAction();
                    if(changes.getSubjectId() == this.id) {
                        changes.stop(false);
                    }
                } catch (NoSuchActionException var10) {
                    ;
                }

                Communicator changes1 = task.getCommunicator();
                if(this.isEgg()) {
                    changes1.sendNormalServerMessage(LoginHandler.raiseFirstLetter(this.getNameWithGenus()) + " hatches!");
                    this.hatch();
                    if(this.getTemplateId() == 466) {
                        Item me = null;
                        me = TileRockBehaviour.createRandomGem();
                        if(me != null) {
                            task.getInventory().insertItem(me, true);
                            changes1.sendNormalServerMessage(LoginHandler.raiseFirstLetter("You find something in the " + this.getName()) + "!");
                        }
                    }
                } else {
                    changes1.sendNormalServerMessage(LoginHandler.raiseFirstLetter(this.getNameWithGenus()) + " is useless and you throw it away.");
                }
            } catch (NoSuchPlayerException | NoSuchCreatureException var11) {
                ;
            }
        } else {
            this.sendDecayMess();
            if(this.isEgg()) {
                this.hatch();
            }

            if(this.isPlanted() && this.hatching) {
                if(this.getTemplateId() == 805) {
                    IslandAdder task1 = new IslandAdder(Server.surfaceMesh, Server.rockMesh);
                    Map changes2 = task1.forceIsland(50, 50, this.getTileX() - 25, this.getTileY() - 25);
                    if(changes2 != null) {
                        Iterator var5 = changes2.entrySet().iterator();

                        while(var5.hasNext()) {
                            Entry me1 = (Entry)var5.next();
                            Integer x = (Integer)me1.getKey();
                            Set set = (Set)me1.getValue();
                            Iterator var9 = set.iterator();

                            while(var9.hasNext()) {
                                Integer y = (Integer)var9.next();
                                Players.getInstance().sendChangedTile(x.intValue(), y.intValue(), true, true);
                            }
                        }
                    }
                } else if(this.getTemplateId() == 1009) {
                    TerraformingTask task2 = new TerraformingTask(, (byte), this.creator, 2, , true);
                    task2.setCoordinates();
                    task2.setSXY(this.getTileX(), this.getTileY());
                }
            }
        }

        Items.destroyItem(this.id);
        return decayed;
    }
}

Share this post


Link to post
Share on other sites

Well, that code checks to see if it's planted.

So I'd guess the code that unplants things when their effective QL drops below 10 is interfering, as a hunch.

Share this post


Link to post
Share on other sites

When the damage reaches 71 the rod becomes unplanted. So we think that is the issue.. might try taking the check to see if it's planted out of the code for when it gets higher then 71. If I figure it out I'll let you guys know since I know others are interested.

Share this post


Link to post
Share on other sites

just for reference to people that want this to work.

change

if(this.isPlanted() && this.hatching) {

to

if(this.hatching) {

in server.jar!\com\wurmonline\server\items\Item.class

 

will disable the isplanted check for wand of the seas and rod of eruption. They will then work as intended.

Edited by ausimus
  • Like 1

Share this post


Link to post
Share on other sites

Can this be made into a mod, a lot of server owners really do not want to change the .jar file after every update,

Also could have it change the mechanic of the volcano too. Ie lower erruotions etc.

Share this post


Link to post
Share on other sites

I'm not very proficient with the modloader but should be possible.

Share this post


Link to post
Share on other sites

It's a very simple change without a mod if you really need it.

 

Quote

change


if(this.isPlanted() && this.hatching) {

to


if(this.hatching) {

in server.jar!\com\wurmonline\server\items\Item.class

 

Share this post


Link to post
Share on other sites

wands where fixed in 1.3 update they now work like there supose to.

Share this post


Link to post
Share on other sites

Oh sweet didn't even know they were fixed haha

 

:D

Share this post


Link to post
Share on other sites

Well, there goes my pristine idyllic server.............. 

 

ERUPT ALL MOUNTAINS! 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this