96 lines
2.4 KiB
Ruby
96 lines
2.4 KiB
Ruby
# Make food and plants decay, and vanish after a few months
|
|
=begin
|
|
|
|
deterioratefood
|
|
===============
|
|
Somewhere between a "mod" and a "fps booster", with a small impact on
|
|
vanilla gameplay.
|
|
|
|
With this script running, all food and plants wear out and disappear
|
|
after several months. Barrels and stockpiles will keep them from
|
|
rotting, but it won't keep them from decaying. No more sitting on a
|
|
hundred years worth of food. No more keeping barrels of pig tails
|
|
sitting around until you decide to use them. Either use it, eat it,
|
|
or lose it. Seeds, are excluded from this, if you aren't planning on
|
|
using your pig tails, hold onto the seeds for a rainy day.
|
|
|
|
This script is...pretty far reaching. However, almost all long
|
|
running forts I've had end up sitting on thousands and thousands of
|
|
food items. Several thousand cooked meals, three thousand plump
|
|
helmets, just as many fish and meat. It gets pretty absurd. And your
|
|
FPS doesn't like it.
|
|
|
|
Usage: ``deterioratefood (start|stop)``
|
|
|
|
=end
|
|
|
|
class DeteriorateFood
|
|
|
|
def initialize
|
|
end
|
|
|
|
def process
|
|
return false unless @running
|
|
|
|
items = [df.world.items.other[:FISH],
|
|
df.world.items.other[:FISH_RAW],
|
|
df.world.items.other[:EGG],
|
|
df.world.items.other[:CHEESE],
|
|
df.world.items.other[:PLANT],
|
|
df.world.items.other[:PLANT_GROWTH],
|
|
df.world.items.other[:FOOD]]
|
|
|
|
items.each { |type|
|
|
type.each { |i|
|
|
i.wear_timer += 1
|
|
if (i.wear_timer > 24 + rand(8))
|
|
i.wear_timer = 0
|
|
i.wear += 1
|
|
end
|
|
if (i.wear > 3)
|
|
i.flags.garbage_collect = true
|
|
end
|
|
}
|
|
}
|
|
|
|
|
|
end
|
|
|
|
def start
|
|
@onupdate = df.onupdate_register('deterioratefood', 1200, 1200) { process }
|
|
@running = true
|
|
|
|
puts "Deterioration of food commencing..."
|
|
|
|
end
|
|
|
|
def stop
|
|
df.onupdate_unregister(@onupdate)
|
|
@running = false
|
|
end
|
|
|
|
def status
|
|
@running ? 'Running.' : 'Stopped.'
|
|
end
|
|
|
|
end
|
|
|
|
case $script_args[0]
|
|
when 'start'
|
|
if ($DeteriorateFood)
|
|
$DeteriorateFood.stop
|
|
end
|
|
|
|
$DeteriorateFood = DeteriorateFood.new
|
|
$DeteriorateFood.start
|
|
|
|
when 'end', 'stop'
|
|
$DeteriorateFood.stop
|
|
|
|
else
|
|
if $DeteriorateFood
|
|
puts $DeteriorateFood.status
|
|
else
|
|
puts 'Not loaded.'
|
|
end
|
|
end |