[MOD 0.13.17+] Rampant

Topics and discussion about specific mods
Veden
Filter Inserter
Filter Inserter
Posts: 294
Joined: Wed Jul 13, 2016 3:54 pm
Contact:

Re: [MOD 0.13.17+] Rampant - 0.15.1

Post by Veden »

Should be a config option within the mod to toggle the projectiles.
config.useDumbProjectiles = true
set to false.

I haven't migrated the config to the new method in 0.15 yet, but the old config.lua should work.

Out of curiosity, what do you dislike about the non homing versions?
User avatar
Shin
Inserter
Inserter
Posts: 29
Joined: Sun May 08, 2016 5:16 am
Contact:

Re: [MOD 0.13.17+] Rampant - 0.15.1

Post by Shin »

Veden wrote:Should be a config option within the mod to toggle the projectiles.
config.useDumbProjectiles = true
set to false.

I haven't migrated the config to the new method in 0.15 yet, but the old config.lua should work.

Out of curiosity, what do you dislike about the non homing versions?
Ok, thanks a lot! :)

It makes it a lot easier to destroy alien bases because you can dodge the projectiles just by running around. It feels like it kinda makes the worm turrets useless. Otherwise it's a great mod so far. I have high hopes on it that it will make combat a lot more interesting.
admo
Inserter
Inserter
Posts: 27
Joined: Tue Jun 28, 2016 1:07 am
Contact:

Re: [MOD 0.13.17+] Rampant - 0.14.10

Post by admo »

Veden wrote:...
The code below is something I had written for the Natural Evolution Mods to fix the rail targeting and pole destroying issues.

Code: Select all

    local autoRepair = { 
        "straight-rail" = true, 
        "curved-rail" = true,
        "electric-pole" = true
    }

-- this code would be in the onDeath event. Auto repair things like rails, and signals. Also by destroying the entity the enemy retargets.
    if (event.force == game.forces.enemy) and autoRepair[event.entity.name] then
        local repairPosition = event.entity.position
        local repairName = event.entity.name
        local repairForce = event.entity.force
        local repairDirection = event.entity.direction
        event.entity.destroy()
        local entityRepaired = game.surfaces[1].create_entity({position=repairPosition,
                                                               name=repairName,
                                                               direction=repairDirection,
                                                               force=repairForce})
        -- forces enemy to disperse 
        local enemies = game.surfaces[1].find_entities_filtered({area = {{x=repairPosition.x-20, y=repairPosition.y-20},
                                                                         {x=repairPosition.x+20, y=repairPosition.y+20}},
                                                                 type = "unit",
                                                                 force = game.forces.enemy})
        for i=1, #enemies do
            local enemy = enemies[i]
            enemy.set_command({type=defines.command.wander,
                               distraction=defines.distraction.by_enemy})
        end
    end
How do I deploy this? Do I need to mod the entities or is this pasted into the console?
Veden
Filter Inserter
Filter Inserter
Posts: 294
Joined: Wed Jul 13, 2016 3:54 pm
Contact:

Re: [MOD 0.13.17+] Rampant - 0.15.3

Post by Veden »

The build v0.15.3 has that code integrated and configuration options in the mod menu.
admo
Inserter
Inserter
Posts: 27
Joined: Tue Jun 28, 2016 1:07 am
Contact:

Re: [MOD 0.13.17+] Rampant - 0.15.3

Post by admo »

Veden wrote:The build v0.15.3 has that code integrated and configuration options in the mod menu.
Great! I turned it on and things are working great except that if the spitters retreat near some rails they'll destroy them. They do ignore the rails on their way to attack me though.

edit: nevermind they just murdered some rails without approaching the turrets. I did turn on the options in the mod menu, then loaded the save, then placed the rails. The checkboxes show as on for straight and curved rails.
Veden
Filter Inserter
Filter Inserter
Posts: 294
Joined: Wed Jul 13, 2016 3:54 pm
Contact:

Re: [MOD 0.13.17+] Rampant - 0.15.4

Post by Veden »

I didn't name one of the settings very well, "make buildings safe from biters" needs to be enabled for any of the make safe toggles.
I'm uploading a new version with updated verbiage:
"Enable building safety."
admo
Inserter
Inserter
Posts: 27
Joined: Tue Jun 28, 2016 1:07 am
Contact:

Re: [MOD 0.13.17+] Rampant - 0.15.4

Post by admo »

Veden wrote:I didn't name one of the settings very well, "make buildings safe from biters" needs to be enabled for any of the make safe toggles.
I'm uploading a new version with updated verbiage:
"Enable building safety."
Works great, I took out my personal roboports to deal with robots getting out while I'm riding a train and trying to repair rails.
Hyratel
Inserter
Inserter
Posts: 34
Joined: Sun May 15, 2016 10:35 pm
Contact:

Re: [MOD 0.13.17+] Rampant - 0.15.4

Post by Hyratel »

I'm crossposting because I don't know whose code it would fall under but the Dumb Spitter Shots bypass Walls Block Spitters Mod, rendering my turrets vulnerable when I was expecting otherwise
kyranzor
Filter Inserter
Filter Inserter
Posts: 499
Joined: Fri Oct 31, 2014 4:52 pm
Contact:

Re: [MOD 0.13.17+] Rampant - 0.15.4

Post by kyranzor »

Hey Veden,

I want to use Rampant AI as a dependency for my Zombie Swarm mod, which replaces some/all of the biters with zombie style enemies, and use your AI mod to give them more interesting behaviours. Is there a way for my mod to modify settings or Rampant AI such as the group sizes and attack frequencies etc? I want to make MASSIVE swarms of zombies attack the player and the player's base very frequently.
Veden
Filter Inserter
Filter Inserter
Posts: 294
Joined: Wed Jul 13, 2016 3:54 pm
Contact:

Re: [MOD 0.13.17+] Rampant - 0.15.4

Post by Veden »

Hyratel wrote:I'm crossposting because I don't know whose code it would fall under but the Dumb Spitter Shots bypass Walls Block Spitters Mod, rendering my turrets vulnerable when I was expecting otherwise
I don't know how possible it will be to actually make the non-homing versions collide with something due to the fact I'm using the flamethrower as the weapon prototype.
I tried last night adding some collision stuff into the prototype and was unable to get it to work, however, that doesn't mean it can't work. I will need to come back to this otherwise maybe Earendel has a solution to put into their wall block spitters mod.
kyranzor wrote:Hey Veden,

I want to use Rampant AI as a dependency for my Zombie Swarm mod, which replaces some/all of the biters with zombie style enemies, and use your AI mod to give them more interesting behaviours. Is there a way for my mod to modify settings or Rampant AI such as the group sizes and attack frequencies etc? I want to make MASSIVE swarms of zombies attack the player and the player's base very frequently.
I will have to expose somethings in the remote call interface. Potentially I would be willing to split some of the code into more of a library.
kyranzor
Filter Inserter
Filter Inserter
Posts: 499
Joined: Fri Oct 31, 2014 4:52 pm
Contact:

Re: [MOD 0.13.17+] Rampant - 0.15.4

Post by kyranzor »

If you were so kind as to add some remote call interfaces to read/write the max wave size and the attack wave generation threshold it would be handy. Is there not a minimum wave size?
Veden
Filter Inserter
Filter Inserter
Posts: 294
Joined: Wed Jul 13, 2016 3:54 pm
Contact:

Re: [MOD 0.13.17+] Rampant - 0.15.4

Post by Veden »

Code: Select all

--[[
    Used for gaussian random numbers
--]]
local function marsagliaPolarMethod()
    local iid1 
    local iid2 
    local q 
    repeat
	iid1 = 2 * math.random() + -1
	iid2 = 2 * math.random() + -1
	q = (iid1 * iid1) + (iid2 * iid2)
    until (q ~= 0) and (q < 1)
    local s = mSqrt((-2 * mLog10(q)) / q)
    return iid1 * s
end

function mathUtils.gaussianRandom(mean, std_dev) 
    return mean + (marsagliaPolarMethod() * std_dev)
end

function mathUtils.gaussianRandomRange(mean, std_dev, min, max)
    local q
    repeat
	q = mathUtils.gaussianRandom(mean, std_dev)
    until (q >= min) and (q <= max)
    return q
end

--[[
    attackWaveScaling is used to calculate the attack wave size from the evolutionFactor
    default is config.attackWaveMaxSize * (evolutionFactor ^ 1.666667)
    DOES NOT affect vanilla biters waves
--]]
config.attackWaveScaling = function (evolutionFactor)
    local attackWaveMaxSize = settings.startup["rampant-attackWaveMaxSize"].value
    return math.ceil(gaussianRandomRange(attackWaveMaxSize * (evolutionFactor ^ 1.66667),
					 (attackWaveMaxSize * 0.5) * 0.333,
					 1,
					 attackWaveMaxSize + (attackWaveMaxSize * 0.25)))
end
The code above is how the attack waves scale, so I don't actually specify a minimum.

I will probably have something together within a day or two.
User avatar
Earendel
Factorio Staff
Factorio Staff
Posts: 716
Joined: Sun Nov 23, 2014 11:57 am
Contact:

Re: [MOD 0.13.17+] Rampant - 0.15.4

Post by Earendel »

Veden wrote:
Hyratel wrote:I'm crossposting because I don't know whose code it would fall under but the Dumb Spitter Shots bypass Walls Block Spitters Mod, rendering my turrets vulnerable when I was expecting otherwise
I don't know how possible it will be to actually make the non-homing versions collide with something due to the fact I'm using the flamethrower as the weapon prototype.
I tried last night adding some collision stuff into the prototype and was unable to get it to work, however, that doesn't mean it can't work. I will need to come back to this otherwise maybe Earendel has a solution to put into their wall block spitters mod.
My only option right now would be to figure out a way for Walls-Block-Spitters to convert all of the stream effects into equivalent projectile effects that have direction_only=true set so they still act 'dumb', i.e. won't track the target but can still be blocked.

It's not impossible, but it would be a huge amount of work to do it in a programmatic way that keeps up with any changes to this mod. A slightly more realistic option would be for Veden to either change most of the steams to be projectiles unless they absolutely have to be (such as long continuous streams). My mod stands a decent chance of updating the projectiles to be blocked at that point, or they could just be set up with a collision box and a collision mask that includes "layer-13" just to be sure. This change could also potentially be a config option, or perhaps detect the presence of Walls-Block-Spitters in order to make the change. Both of these options just add more work though.

I think the best immediate course of action is for both of us to make a modding interface request for the 'stream' prototype to support collision_box and collision_mask. If that is done then it can be made to work with streams without other changes.
gum500
Burner Inserter
Burner Inserter
Posts: 13
Joined: Wed Jul 27, 2016 10:50 pm
Contact:

Re: [MOD 0.13.17+] Rampant - 0.15.5

Post by gum500 »

When im trying to play in multiplyaer with my friend he got this message and after he hits yes game crashed up im 100% rampant is causing this problem because we checked all mods nad when it toggle of everything is fine
Attachments
factorio-current.log
(11.83 KiB) Downloaded 125 times
unknown (1).png
unknown (1).png (2.8 MiB) Viewed 9144 times
User avatar
Earendel
Factorio Staff
Factorio Staff
Posts: 716
Joined: Sun Nov 23, 2014 11:57 am
Contact:

Re: [MOD 0.13.17+] Rampant - 0.15.5

Post by Earendel »

Veden
Filter Inserter
Filter Inserter
Posts: 294
Joined: Wed Jul 13, 2016 3:54 pm
Contact:

Re: [MOD 0.13.17+] Rampant - 0.15.5

Post by Veden »

Earendel wrote:Modding Interface Request: Stream type to support collision_box, collision_mask
Thanks for making the request. I will also look into trying out a different way of doing the projectiles.
gum500 wrote:When im trying to play in multiplyaer with my friend he got this message and after he hits yes game crashed up im 100% rampant is causing this problem because we checked all mods nad when it toggle of everything is fine
What version are you running and what is on the server?
The log file doesn't have Rampant anywhere in it.
User avatar
Earendel
Factorio Staff
Factorio Staff
Posts: 716
Joined: Sun Nov 23, 2014 11:57 am
Contact:

Re: [MOD 0.13.17+] Rampant - 0.15.5

Post by Earendel »

Veden wrote:
Earendel wrote:Modding Interface Request: Stream type to support collision_box, collision_mask
Thanks for making the request. I will also look into trying out a different way of doing the projectiles.
The response is basically that collision on streams will never happen.

I think something visually similar to streams should be possible with projectiles. Projectiles can rotate like a rocket so you can use more of a directional shape. Also you can have them spawn 'smoke' as they go, but that smoke could be visually the same as the stream particles so it looks like a stream.
gum500
Burner Inserter
Burner Inserter
Posts: 13
Joined: Wed Jul 27, 2016 10:50 pm
Contact:

Re: [MOD 0.13.17+] Rampant - 0.15.5

Post by gum500 »

Im using latest rampant and 0.15.9v of the game idk why log isnt have rampant but when we toogle it off everything is fine
User avatar
Gentz
Burner Inserter
Burner Inserter
Posts: 8
Joined: Thu Aug 25, 2016 6:30 am
Contact:

Re: [MOD 0.13.17+] Rampant - 0.15.5

Post by Gentz »

Can we have it so that "Use Natural Evolution Unit Launchers (Needs NE)" is disabled by default in 0.15 unless the NE mod is installed. Tracking down what was causing my game to crash when Quitting and Restarting was the most annoying thing ever when you have 80 mods.

Edit: Or at least give us some warning in the log file.
Edit: Spelling
Veden
Filter Inserter
Filter Inserter
Posts: 294
Joined: Wed Jul 13, 2016 3:54 pm
Contact:

Re: [MOD 0.13.17+] Rampant - 0.15.5

Post by Veden »

Gentz wrote:Can we have it so that "Use Natural Evolution Unit Launchers (Needs NE)" is disabled by default in 0.15 unless the NE mod is installed. Tracking down what was causing my game to crash when Quitting and Restarting was the most annoying thing ever when you have 80 mods.

Edit: Or at least give us some warning in the log file.
Edit: Spelling
What is your mod list?

I can make the change, I don't know why it would change anything though. Below is the code that you are toggling and unless NE is detected wont run the NE specific changes.

Code: Select all

local vanillaUpdates = require("prototypes/enemies/UpdatesVanilla")
local bobsUpdates = require("prototypes/enemies/UpdatesBobs")
local NEUpdates = require("prototypes/enemies/UpdatesNE")

local function bobsDetected()
    return data.raw["turret"]["bob-big-explosive-worm-turret"] ~= nil
end

local function NEDetected()
    return data.raw["unit"]["medium-spitter-Mk3"] ~= nil
end

if settings.startup["rampant-useDumbProjectiles"].value then
    vanillaUpdates.useDumbProjectiles()
    if bobsDetected() then
    	require("prototypes/enemies/AttackBobs")
    	bobsUpdates.useDumbProjectiles()
    end
    if NEDetected() then
    	require("prototypes/enemies/AttackNE")
    	NEUpdates.useDumbProjectiles()
    	if settings.startup["rampant-useNEUnitLaunchers"].value then
    	    NEUpdates.useNEUnitLaunchers()
    	end
    end
end
Post Reply

Return to “Mods”