Mods / Interesting Ore Gen

Tags: #Worldgen
Author: RosstheGreat
Side: Both
Created: Apr 25th at 6:37 PM
Last modified: May 5th at 7:12 AM
Downloads: 1848
Follow Unfollow 144

Latest release (for outdated Vintage Story v1.20.9):
InterestingOreGen-v1.2.0.zip  1-click install


Ever since I saw my first playthrough of Vintage Story, I always thought it could benefit from more realistic ore generation. I was disappointed to see every ore with few exeptions spawn as discs! And after several weeks of hard work I present to you

Interesting Ore Gen


Adding several new ore generators to the game, and patches all vanilla metal ores and sulfur to use them!

I balanced this mod around the idea of having a harder time finding ore, but once you do find it you're set. No more piddly little veins to harvest for a small scrap of trace material! For vanilla ore spawn rates keep Global Deposit Spawn Rate in worldgen options at 100%, if you want a harder experience drop it down to 20%. The veins will spawn significantly less frequently and be harder to find.
image

 

A small side note, but this increases Saltpeter drops by 150%. Unrelated but eventually I had planned for it to become it's own veintype, for now this is a holdover.

Another note, This mod does NOT touch the spawn rates, or spawn locations of surface deposits (such as copper and tin), and doesn't currently effect any mineral deposits OTHER than sulfur. (Full list of deposits below)

New Ore Generator Shapes

 

New Oregen Shapes!

(Will reupload screenshots later, had issues with previous ones, please join the vintage story discord and check out the InterestingOreGen thread!)

1) Intrusion Veins

This vein forms hair-like vertical spikes/pillars in a large cluster. Depending on the ore they can range from 3 to rarely 16 blocks in height and the pillars ranging from 1 to 5 blocks in diameter. The cluster regions can be between 16 and 64 blocks in diameter, and up to 32 blocks tall (in an ellipsoid shape). There is a "tracer mineral" in this vein that interconnects all of the pillars, default is quartz. It will sometimes be a different variant than the stone you're mining it in, this is intended.

2) Thread Vein

These veins are very large deposits, with a large central pillar with a higher grade ore, and many branching tendrils out the side that split and run for up to 64 blocks. On the tendrils there is also a chance to find "sheets" of ore that spawn, simulating an ore bearing material filling in cracks in the rock. The size of these deposits vary quite a lot, from as little as 30 blocks high upwards of 70 in some cases. These veins regularly have upwards of 20,000 ore in them, however they often only have a medium quality center, and poor tendrils that reach out into the rock. Sometimes you'll find a vein with high quality center and medium quality exterior, but that is rare. (Approximately 1/16 veins)

 

3) Fault Veins

These are disc shaped deposits that tilt/rotate in random axis. 30% of the time they're aligned to one of the block planes, the rest of the time they're randomly rotated. Sometimes contain sub-deposits

 

4) Chimney Formations

Large verticalish columns/tubes (not hollow) of ore, the center of these tend to be a higher quality ore as well. They can branch and turn, and generally there's a few of them in a small area. Size ranges from 4-16 blocks in diameter and 30-100 blocks tall depending on the ore using it. Sometimes contain sub-deposits

 

5) Hydro Tubes

Hydro Tubes are very long, thin tubes of ore that branch, twist, and turn occasionally fracturing into the host rock. These tubes can go on for hundreds of blocks! Size ranges from 2-8 blocks in diameter (often only 3 or 4) but traven for upwards of 500 blocks sometimes. The vein will branch and split as well, plenty of ore to be had! Sometimes contain sub-deposits

 

6) Banded Formation

These are quite literally vanilla spawns, I just generally made them far larger.

 

 

All main ores follow the vanilla oremap! Sub ores are not accounted for but can be found in "miniscule amounts" sometimes, often a good hint there's a vein very close to you when prospecting!

Ore Spawn Types Description
Bismuthinite Intrusion, Hydrotube Intrusion spawns in smaller pockets near the surface, Hydrotube veins spawn far deeper and contain very large amounts of ore, and often a sub-deposit of Fluorite
Cassiterite Intrusion, Chimney Intrusion spawns in medium pockets nearer the surface, Chimneys spawn in large deposits deeper down with a subdeposit of Hematite when found in Granite, Peridotite, and Phyllite
Chromite Chimney Spawns in very large chimneys deep underground, the chimneys can reach to just below the surface, has Magnetite Cores in Andesite, Granite, Basalt, and Peridotite
Galena Hydrotube, Chimney Both spawn in medium-small veins, nearer the surface, both contain sub-deposits of Silver
Hematite Banded Spawns in large discs anywhere from Mantle to surface
ilmenite Thread, Banded Threads spawn deep underground can reach near or towards the surface, Banded spawns anywhere from mantle to surface
Limonite Thread, Hydrotube Threads spawn near or at mantle and can travel up to 140 blocks towards the surface, Hydrotube can spawn anywhere and will reach for up to 500 blocks
Magnetite Thread, Fault Thread spawns near or at manble and can travel up to 100 blocks towards the surface, Bands spawn in very large discs anywhere from mantle to surface, Has a sub deposit in any stone it spawns in, except Andesite.
Malachite Hydrotube They can spawn anywhere but tend towards near the surface, can extend up to 500 blocks long, and tend to branch less than other hydrotubes, Malachite veins often contain small amounts of native silver
Native Copper Chimney, Fault Intrusion tends to spawn near the surface in medium sized veins, Fault veins spawn more often deeper, but can extend to the surface. Both often contain poor native gold.

Native Gold

Intrusion Can spawn just about anywhere, but only where "Gold" spawns
Native Silver Intrusion Can spawn just about anywhere, but only where "Silver" spawns, at 4x the frequency of gold (accounting for commonness in other ores and the nugget drops from ores, this is roughly 10x the commonness of gold)
Pentlandite Chimney Starts very low to the mantle and can travel possibly up to the surface, Spawns with Chromite cores
Rhodochrosite Hydrotube Spawns on the bottom half of the world (total world height, not from mantle to surface), in large and very long veins, with fewer branches than other hydrotubes, spawns with small amounts of Chromite
Sphalerite Hydrotube, Chimney Hydrotubes and Chimneys spawn from surface to mantle, but wont tend to spawn in mountains. both ore veins are generally quite large. Often spawns with small quantities of Galena
Sulfur Chimney Spawns generally near the surface, but will spawn anywhere it can. Smaller chimney, but more of them.

 

Bugs and Issues

 

None! (Prospecting bug has been fixed!)

 

Incompatibilites

Any mod that directly changes or modifies vanilla ore behavior wont workThis is because I disable vanilla ore generation (for ores my mod effects, stuff like emeralds or lapis are uneffected). Otherwise this should be compatible with pretty much every mod. I've tested it with common terrain mods such as Terra Prety and Conquest Landform Overhaul, and had no issues so far.

If there are any official incompatibilities I will put them here:
Vanilla Ore Rebalance (Or any mod like it)

 

Integrations


At current, Geology Additions is NOT currently supported, however it wont break either mod I think. My mod will still generate the vanilla ore in vanilla stone, but it wont generate Geology Additions ores in new structures, or vanilla ores in GA stones. GA's ore gen will be completely untouched though, so it will still generate ore as it would normally. I am currently talking with the GA devs to see about adding compatibility between the two mods, but no guarantees. 

 

Do not redistribute or copy this mod, if you have ideas feel free to contact me on the Vintage Story Discord (same username). Unless the party has explicit written permission from me no copy or branch of this mod is to be made. However JSON (content) mods are okay to use this as a library for their own ore generation, and anyone is welcome to learn from my mod's JSONs for how to use the generators. Documentation for the generators is a future project of mine.

Version For Game version Downloads Release date Changelog Download 1-click mod install*
v1.2.0 1180 May 5th at 7:12 AM Show InterestingOreGen-v1.2.0.zip 1-click install
v1.1.2 442 May 2nd at 6:56 PM Show InterestingOreGen-v1.1.2.zip 1-click install
v1.1.1 226 May 1st at 6:59 PM Show InterestingOreGen-v1.1.1.zip 1-click install

45 Comments (oldest first | newest first)

💬 RosstheGreat , May 14th at 4:59 PM

SLEDGE_HAMMER Yeah that's a totally doable feature, although I wont be updating for quite some time (at least post 1.21 for VS) unless there is a major bug or feature lacking. Cinnabar is a mineral as well and I just didn't really bother with minerals truthfully. Sulfur is the only exception as I was testing it on a new oregen feature and just kept it in.

💬 SLEDGE_HAMMER, May 14th at 2:26 AM

Would it be possible to make cinnabar spawn in hydrothermal-type formations near the surface? chimneys, hydrotubes, etc...

💬 Vigilance, May 11th at 8:29 PM

RosstheGreat Interesting! I'm not as savvy in everything as I'd like to be, or I'd offer my hand assisting with the patch without any hesitation. The only thing I do know, from what I've personally been dabbling with lately, is that load order issues can be rectified by setting dependencies. If the only issue thus far is that GA loads after the fact, have you considered, just for testing purposes, setting a dependency on GA for your mod, so it'd load after GA, or specifically separating the GA behaviors as their own separate patch, and then giving that new patch mod its own dependencies in the modinfo to IOG and GA? 

Of course, I'd be more than happy to help out testing or any of the more miserable legwork. I'll probably try to get in touch on Discord, in regards to that.

💬 RosstheGreat , May 11th at 6:38 PM

Zepper202 To give you a rough explanation, prospecting is unfortunately not absolute, but takes a rough value of how many spawn chances there are for an ore in a region, multiplies it by how much ore is in each deposit, and does some other math on it to give you your PPT readings. As my ore deposits are entirely random I generalize all ore deposits to have approximately 5000 to 7500 ore in it. You might have an area where your stone layer for that specific ore (hematite in this case) is super thin, and that's causing your readings to get messed up. However if that isn't the case, I genuinely don't know why you're having an issue. Hematite is the only ore in my mod that is entirely vanilla. I only make the deposits larger, and slightly less frequent. Otherwise it is the same generator that is built into vanilla.

If you're using Rock Strata Variety that can also cause issues with thin stone layers, I would recommend against using that mod, as most of my ores depend on thick stone layers.




Vigilance Truthfully I don't know what will happen if you combine the two, but what I assume will happen is you'll get GA ores in GA stone, and Vanilla ores in Vanilla stone. As per your example you wont get Native Copper spawning in Mudstone, although you might get Chalcocite spawning in limestone (or wherever it would spawn normally in Vanilla stones). That's because my mod only disables vanilla metal-ore generation, not the generation from GA. It would mean any and all GA ores spawn as discs where they should spawn normally, and there's a possibility of them spawning normally in normal stones too.

Also, it's not that I left GA out on purpose. I had actually written a patch for it, but it didn't work. For some reason registering GA stones in my mod causes it to crash, and the only explanation I can find is that GA loads after my mod loads, causing my mod to reference things that don't exist yet. It might require a totally seperate mod to work but that is a monumental amount of patching I'd have to do, and even then it's not totally guarenteed to work. The best solution I can find is having GA patch it in themselves as it would be easier and more stable anyway. If you want to do some testing or know much about JSON patching I'd be happy to have someone assist me on it as well.

IOG Thread on the Official Vintage Story discord.
https://discord.com/channels/302152934249070593/1367581350118428794

💬 Zepper202, May 11th at 5:48 PM

I think there still might be an issue with prospecting, at least for iron.

 

I started using the previous version of the mod before the prospecting bug was fixed. I prospected an area with very high hematite at the richest chunk, but after excavating several shafts down to the mantle I got no hematite readings. Eventually I used the block overlay mod to see where the ore was, but there was actually nothing in the entire area that was supposedly rich. I saw that the new version was supposed to fix prospecting readings, so I updated the mod, deleted all my old readings, and prospected the same area again. The chunk with the very high reading updated to an ultra high one, but again there's no iron in that area. Not sure if something's broken or I'm just very unlucky.

💬 Vigilance, May 11th at 11:45 AM

RosstheGreat I think that's a super valid reason to axe GA, and cut it out of the initial scope/focus. Unfortunately, as far as my "group" goes, I'm the rockhound, so... unfortunately... :)

I couldn't particularly imagine a world I don't have my obtuse quantity of extra rocks and minerals, even if it would lead to a lot less headaches overall for me when it came to... Well, all manner of things, but mostly mod compatibility. I'm just worried, because if I had to rely entirely on GA's ores to populate GA's rocks... I guess it depends what that'd mean? Like, native copper discs not generating in, say, mudstone? Naturally I'm not expecting it to just magically spit out Chalcocite veins in your mod's fashion, or even for native copper to generate in GA rocks by your mod's methods, but my interpretation meant ore gen would get very silly in an undesirable way should I jump the gun and throw the mod in as it stands.

💬 RosstheGreat , May 11th at 5:42 AM

Vigilance Because to get my new oregen to work I decided to patch vanilla ore spawn to 0. This is to prevent accidental overlap, but also because if I were to patch my new JSON modifiers into the vanilla oregen it would flat out cause crashes with other mods. This was the safest way to run it. I'm almost certain you can run IOG and GA together, they just wont interact at all, but also shouldn't crash or cause any errors. Hopefully.

 

Also, I stopped using GA a long time ago mainly because it bloated the ore pool too much. A lot of the people I run with in my server ended up disliking having so many different ore types (most of them aren't "geology savvey") so chalcocite and chalocopyrite giving half the ore ended up being more annoying than immersive for most of them. I still love GA, and I think it'd be really cool to add back on my server some day but for now I must remain with the vanilla ores on my server.

💬 Vigilance, May 11th at 4:17 AM

Out of curiosity, why does this mod break vanilla ores within GA stones? I was thinking about it, and if it just left the old ore gen for their stones and used yours for vanilla stone layers, that'd almost be tolerable to use it as-is until a GA patch came. On the other hand, it's probably just better to wait for a proper compatibility than bargaining and making compromises. Lol.

I'm still very excited about this. In an alternate universe, maybe my next server will do away with GA just to try this oregen out. Fantastic idea, and it brings me a lot of joy to see attention to detail being paid to systems like this.

💬 Froshure, May 9th at 9:54 PM

Alright, thanks for the info, RosstheGreat.

💬 RosstheGreat , May 8th at 10:17 PM

I appreciate the clarification! Hope everything is situated now! 😄

💬 VladTheG, May 8th at 8:36 PM

Alright,this error has nothing to do with your mod,i just touched some configs i shouldn't have 😅

 

💬 RosstheGreat , May 8th at 6:56 PM

VladTheG Interesting... I've never had any error like that whatsoever, can you send me your server.main and your full modlist? It would be easier over the discord to help, but for now try just using my mod (No other ones) and load the same seed in a different world.

I run a modpack of 190+ mods and while it can be laggy at times on my pc, it never has caused me this issue.

💬 VladTheG, May 8th at 6:42 PM

I realy liked this mod from the desriptions,but now i'm trying to create a new world to play with it,and i'm getting an error:

Exception: Somehow worldgen has become stuck in an endless loop, please report this as a bug! Additional data in the server-main log
at Vintagestory.Server.ServerSystemSupplyChunks.loadChunkAreaBlocking(Int32 chunkX1, Int32 chunkZ1, Int32 chunkX2, Int32 chunkZ2, Boolean isStartupLoad, ITreeAttribute chunkGenParams) in VintagestoryLib\Server\Systems\World\LoadThread\SupplyChunks.cs:line 1793
at Vintagestory.Server.ServerSystemSupplyChunks.InitWorldgenAndSpawnChunks() in VintagestoryLib\Server\Systems\World\LoadThread\SupplyChunks.cs:line 1537
at Vintagestory.Server.ServerSystemLoadAndSaveGame.OnWorldgenStartup() in VintagestoryLib\Server\Systems\World\LoadThread\LoadSaveGame.cs:line 198
at Vintagestory.Server.ServerEventManager.<>c.<TriggerWorldgenStartup>b__112_0(Action dele) in VintagestoryLib\Server\ServerEventManager.cs:line 448
at Vintagestory.Server.ServerEventManager.Trigger[T](Delegate[] delegates, String eventName, Action`1 onDele, Action onException) in VintagestoryLib\Server\ServerEventManager.cs:line 718

 

I have way to many mods,but i've played with them for a while,and the game was semistable,and this error appeared after i installed this mod

 

💬 RosstheGreat , May 8th at 7:52 AM

Froshure Changing the global deposit spawn rate should reduce overall spawn rate, but I haven't done extensive testing on it.

I assume you mean on a block-for-block basis. How many blocks of ore does my mod spawn compared to vanilla, and the answer should overall be "less" but it's hard to tell you for certain. If you're asking on a "per deposit" basis, the answer is  substantially less than vanilla, but I make up for that by making the veins overall much larger.

I want to add, though, this is purely from my testing. I have no hard evidence for one way or another, but I tried to create something less matching vanilla but more for the design concept of "Large but somewhat rare deposits" with the addition of "establishing infrastructure for your mine".

💬 Froshure, May 7th at 11:41 PM

Does changing the "Global deposit spawn rate" option in world generation settings affect this mod?

And with this mod, how realistic would you say the quantity of ore generated is?; is it more, less, or about equal to the quantity of ore generated in vanilla VS?

💬 Boukyaku, May 7th at 11:15 AM

This seems really interesting! Will definitely try it out on my new server ♥

💬 RosstheGreat , May 6th at 7:20 PM

I'm happy you like it! I'm incredibly pleased with how the mod turned out. 😄

💬 Vinter_Nacht, May 6th at 2:00 PM

This is incredible and I love it, thank you so much!

💬 RosstheGreat , May 6th at 6:05 AM

Mollycoddle You shouldn't need it, no, none of my ore veins are sea-level deterministic.

💬 Mollycoddle, May 6th at 6:02 AM

Just want to check, if I'm using this I don't need the sea level fix mod, right?

💬 RosstheGreat , May 5th at 9:43 PM

Undea It shouldn't change terrain form at all, it only changes deposit generation. I don't think there will be an issue but make a backup of your world first! I'm not familiar with WorldgenFix, but if it doesn't mess with ore at all then it should be totally fine.

💬 Undea, May 5th at 9:33 PM

hi,

if you use it in an old save, how does the border from old to new look? could we get the ugly line, between old and new terrain?

and i have a 512 world with WorldgenFix how is the compatibline there?

💬 RosstheGreat , May 5th at 5:36 PM

Jalex All new ore shapes can spawn in newly generated chunks. If you started a new world recently it shouldn't be too big of a deal, you maybe have only explored a few thousand blocks. Just update the mod and any new veins should generate in newly formed chunks, and I apologize for the update spam, I had finished the previous update and when I started talking to the GA devs it reminded me I had a generator I needed to finish and I also needed to get sub-deposits functioning. As of current this should be the last major update for a long time.

 

Jomeaga I tried my best to reach a happy medium for most people. Some people will want a single deposit every thousand blocks, and some will want a dozen per chunk (exaggeration but you get my point), if you want less spawn rate it's very easy to unpackage the mod and drop the spawn amounts in the JSONs, I'm happy to explain it in detail if you're interested! If you find an amount you like I am happy to make a "Hardcore" patch mod for it as well for others to use. I tried my best to make the spawn rate sort of match vanilla ore density, but unfortunately I'm able to test this only so far on my own.

💬 Jalex, May 5th at 2:20 PM

Do the new Ore Shapes generate on already existing saves, or do I have to start another one ... again lol

💬 Jomeaga, May 5th at 2:01 PM

I love this mod, mining is my favourite part of the game and I've been waiting for something to make it feel more worthwhile to setup a mine! However, I think the generation chance is currently way too generous. Even set to 20% spawn rate, there are tons of deposits of thousands of blocks of ore...

💬 RosstheGreat , May 5th at 7:35 AM

Updated!

v1.2.0

New generator! Fault Veins, large thin sheets of ore (discs) that are randomly oriented in any axis!
New ore changes:
1) Bismuthinite spawns in Hydrotube and Intrusion veins, Hydrotube has a sub-deposit of Flourite.
2) Cassiterite spawns in Chimneys and Intrusions, on Chimneys in Granite, Peridotite, and Phyllite it will have a core of hematite.
3) Chromite now spawns with Magnetite Cores in andesite(poor) granite(medium) basalt (rich) and peridotite (medium)
4) Galena now spawns with Native Silver in it occasionally.
5) Magnetite now spawns as Thread and Fault Vein, fault will have small amounts of poor to medium Hematite in it. If the vein spawns in Andesite, it wont give any hematite.
6) Malachite can spawn with gold when it's in limestone
7) Native Copper in chimney form also spawns with poor gold, also now instead of intrusion veins spawns in the new Fault Veins! With a tiny amount of gold sometimes too)
8) Pentlandite spawns with chromite cores from Chimneys
9) Rhodochrosite (manganese) spawns with small amounts of Chromite
10) Sphalerite now spawns with Galena patches in both Chimney and Hydrotubes.

Adjusted ore spawns to be generally more common!

💬 Politehnik, May 2nd at 10:24 PM

Looks promising! The only thing stopping me from trying it right now is compatibility with GA.

💬 RosstheGreat , May 2nd at 6:58 PM

Updated!

Fixed the prospecting bug, found the reason and all should be well now. You'll notice much higher concentratons of ore in an area, as average deposit amount per chunk has vastly increased when you're near an ore vein!
Also decreased silver spawn rate by approximately 25%

💬 RosstheGreat , May 2nd at 5:14 PM

ShyishHazard I agree, I actually had intended to include some patching to the cavein code when I first set out to create this mod, and ended up going through with it in testing! However it ended up making mining so unpredictable because supports don't really work ingame. Highly recommend the "Post and Beam" mod though even for just the looks!

Tyan Indeed! The intention is harder to find veins but once you do the mines will almost require infrastructure to be set up! And, as for the sea level/mountain generation I purposely left a few ores in high spawns to get "horizontal" mines as opposed to ladder vertical mines. I want to use Rust and Railroads in my next personal server so I made sure we'd get some mines like that.

💬 Tyan, May 2nd at 4:48 PM

love the new ore vein shapes and this is amazing since it makes setting up an actual mine to work a specific vein (rather than just endlessly digging shafts and prospecting smaller veins) possible.

 

I'd love to see more above sea level ore generation so that mountains and large scale hilly areas have more ore. Lots of ore is still far down below sea level.

💬 ShyishHazard, May 2nd at 10:02 AM

some of these formations would certainly make mining more interesting, the current disc-only situation makes playing with cave-ins enabled a relative non-issue

💬 Vigilance, May 2nd at 5:22 AM

As soon as this gets a Geology Additions patch, I'm going to give myself nightmares grafting it in to my ongoing world. This looks very on par with what I've been wanting.

💬 RosstheGreat , May 2nd at 3:15 AM

Shion I totally feel that! 😓 I have started several worlds because I found a new mod that added new generation of some kind and wanted the ability to play with it sooner rather than later! The woes of selection! hahah

💬 Shion, May 2nd at 2:41 AM

Mods like these make me want to start a new world every time, which is why I never got to the steel age >_<

💬 RosstheGreat , May 2nd at 1:37 AM

I was unaware EM changed ores? Haven't tried it, but I'll look into it.

Edit: Looked into it, from a very light search it doesn't appear I effect any of the ores it's patching, it should be 100% compatible.

💬 absiste, May 2nd at 12:33 AM

Does this work with Expanded Matter/is any compatibility planned? EM's ore changes are pretty miniscule, but they still exist.

💬 RosstheGreat , May 1st at 10:46 PM

Aloy
Yes, this should work with all standard world gen mods! 😄

💬 Aloy, May 1st at 10:22 PM

does it work with other world gen mods like vanillaplus worldgen?

💬 An_Sar, May 1st at 9:56 PM

this looks great, looking forward to geo additons so I can yolo this into my existing world =D

💬 RosstheGreat , May 1st at 9:04 PM

HaraiseTenshi The bug only effects the output % number, I suspect it's because the ore concentration is technically way less than vanilla per chunk. I did notice in very dense areas in my testing it will bump up the percent (for example 0.01%%). The readings are still accurate, but I also haven't tested this extensively yet. And, again, I'm not really sure why this is happening.

Basically, if you ignore the numerical output it should still give you a good chance of finding ore. I am hunting that bug best I can though! 😅

💬 RosstheGreat , May 1st at 9:00 PM

Geology additions is not currently integrated but it should work with vanilla ores in vanilla stone. I just haven't gotten the energy to write a patch for Geology Additions yet truthfully!

💬 HaraiseTenshi, May 1st at 8:01 PM

If the prospecting bug can be fixed I am so gonna add this one :)

This is pure mad genius!

💬 Jalex, May 1st at 7:51 PM

 my god, this is exactly what I wanted. Small Question, are you planning to also add Geology Additions Extra Ores to this?

💬 CKitt, May 1st at 7:49 PM

That looks absolutely amazing. Do you know if it happens to work with Geology Additions?

💬 Viktoria, May 1st at 7:45 PM

Excited to see this, it's exactly what I've been looking for out of the game. Can't wait to try it out!!!

 (edit comment delete)