# grow crops in farm plots. ex: growcrops helmet_plump 20 =begin growcrops ========= Instantly grow seeds inside farming plots. With no argument, this command list the various seed types currently in use in your farming plots. With a seed type, the script will grow 100 of these seeds, ready to be harvested. Set the number with a 2nd argument. For example, to grow 40 plump helmet spawn:: growcrops plump 40 =end material = $script_args[0] count_max = $script_args[1].to_i count_max = 100 if count_max == 0 # cache information from the raws @raws_plant_name ||= {} @raws_plant_growdur ||= {} if @raws_plant_name.empty? df.world.raws.plants.all.each_with_index { |p, idx| @raws_plant_name[idx] = p.id @raws_plant_growdur[idx] = p.growdur } end inventory = Hash.new(0) df.world.items.other[:SEEDS].each { |seed| next if not seed.flags.in_building next if not seed.general_refs.find { |ref| ref._rtti_classname == :general_ref_building_holderst } next if seed.grow_counter >= @raws_plant_growdur[seed.mat_index] inventory[seed.mat_index] += 1 } if !material or material == 'help' or material == 'list' # show a list of available crop types inventory.sort_by { |mat, c| c }.each { |mat, c| name = df.world.raws.plants.all[mat].id puts " #{name} #{c}" } else mat = df.match_rawname(material, inventory.keys.map { |k| @raws_plant_name[k] }) unless wantmat = @raws_plant_name.index(mat) raise "invalid plant material #{material}" end count = 0 df.world.items.other[:SEEDS].each { |seed| next if seed.mat_index != wantmat next if not seed.flags.in_building next if not seed.general_refs.find { |ref| ref._rtti_classname == :general_ref_building_holderst } next if seed.grow_counter >= @raws_plant_growdur[seed.mat_index] seed.grow_counter = @raws_plant_growdur[seed.mat_index] count += 1 } puts "Grown #{count} #{mat}" end