/* * This file is part of Matter Overdrive * Copyright (c) 2015., Simeon Radivoev, All rights reserved. * * Matter Overdrive is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Matter Overdrive is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Matter Overdrive. If not, see <http://www.gnu.org/licenses>. */ package matteroverdrive.init; import cpw.mods.fml.common.event.FMLInitializationEvent; import matteroverdrive.MatterOverdrive; import matteroverdrive.api.events.MOEventTransport; import matteroverdrive.api.events.anomaly.MOEventGravitationalAnomalyConsume; import matteroverdrive.api.quest.IQuestLogic; import matteroverdrive.api.quest.QuestStack; import matteroverdrive.data.quest.*; import matteroverdrive.data.quest.logic.*; import matteroverdrive.data.quest.rewards.ItemStackReward; import matteroverdrive.data.quest.rewards.QuestStackReward; import matteroverdrive.entity.monster.EntityRougeAndroidMob; import matteroverdrive.entity.player.AndroidAttributes; import matteroverdrive.handler.quest.Quests; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.passive.EntityChicken; import net.minecraft.entity.passive.EntityCow; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.WeightedRandom; import java.util.ArrayList; import java.util.List; /** * Created by Simeon on 11/19/2015. */ public class MatterOverdriveQuests { public static List<WeightedRandom.Item> contractGeneration = new ArrayList<>(); public static RandomQuestText killAndroids; public static GenericQuest cocktailOfAscension; public static GenericQuest sacrifice; public static GenericQuest departmentOfAgriculture; public static GenericQuest weaponsOfWar; public static GenericQuest oneTrueLove; public static GenericQuest toThePowerOf; public static GenericQuest punyHumans; public static GenericQuest is_it_really_me; public static GenericQuest beast_belly; public static GenericQuest crashLanding; public static GenericQuest weMustKnow; public static GenericQuest gmo; public static void init(FMLInitializationEvent event) { initMatterOverdriveQuests(); initModdedQuests(); } private static void initMatterOverdriveQuests() { killAndroids = (RandomQuestText)new RandomQuestText(new QuestLogicKillCreature(EntityRougeAndroidMob.class,12,28,40).setAutoComplete(true),"kill_androids",1,0).addQuestRewards(new ItemStackReward(MatterOverdriveItems.androidParts)); cocktailOfAscension = (GenericQuest)new GenericQuest(new QuestLogicCocktailOfAscension(),"cocktail_of_ascension",512).addQuestRewards(new ItemStackReward(MatterOverdriveItems.androidPill,1,0),new ItemStackReward(MatterOverdriveItems.androidPill,1,1),new ItemStackReward(MatterOverdriveItems.androidPill,1,2)); sacrifice = (GenericQuest)new GenericQuest(new QuestLogicKillCreature(new Class[]{EntityChicken.class, EntityCow.class,EntityCow.class},8,15,10).setOnlyChildren(true).setAutoComplete(true),"sacrifice",0).addQuestRewards(new ItemStackReward(Items.saddle),new ItemStackReward(Items.name_tag)); departmentOfAgriculture = (GenericQuest)new GenericQuest(new QuestLogicCollectItem(new Item[]{Items.wheat,Items.carrot,Items.potato},31,63,3),"department_of_agriculture",0).addQuestRewards(new ItemStackReward(Items.emerald,4),new ItemStackReward(Items.diamond_hoe)); weaponsOfWar = (GenericQuest)new GenericQuest(new QuestLogicCraft(new ItemStack(Blocks.anvil),1,3,60).setAutoComplete(true),"weapons_of_war",0).addQuestRewards(new ItemStackReward(MatterOverdriveItems.tritaniumSword),new ItemStackReward(MatterOverdriveItems.tritaniumChestplate)); oneTrueLove = (GenericQuest)new GenericQuest(new QuestLogicMine(Blocks.diamond_ore,1,1,180).setAutoComplete(true),"one_true_love",0).addQuestRewards(new ItemStackReward(Items.emerald,6)); punyHumans = (GenericQuest)new GenericQuest(new QuestLogicBecomeAndroid(),"puny_humans",256).addQuestRewards(new ItemStackReward(MatterOverdriveItems.battery),new ItemStackReward(MatterOverdriveItems.androidPill,1)); is_it_really_me = (GenericQuest)new GenericQuest(new QuestLogicSingleEvent(MOEventTransport.class).setAutoComplete(true),"is_it_really_me",120).addQuestRewards(new ItemStackReward(MatterOverdriveItems.item_upgrade,2,4)); beast_belly = (GenericQuest)new GenericQuest(new QuestLogicSingleEvent(MOEventGravitationalAnomalyConsume.class),"beast_belly",210).addQuestRewards(new ItemStackReward(MatterOverdriveBlocks.gravitational_stabilizer,2)); weMustKnow = (GenericQuest)new GenericQuest(new QuestLogicPlaceBlock(4,new ItemStack(MatterOverdriveBlocks.decorative_coils).setStackDisplayName("Communication Relay"),1,1).setAutoComplete(true),"we_must_know",120).addQuestRewards(new ItemStackReward(Items.emerald,8)); crashLanding = (GenericQuest)new GenericQuest(new QuestLogicCraft(new ItemStack(MatterOverdriveItems.security_protocol),0,0,0).setAutoComplete(true),"crash_landing",60).addQuestRewards(new ItemStackReward(new ItemStack(MatterOverdriveBlocks.decorative_coils).setStackDisplayName("Communication Relay")),new QuestStackReward(new QuestStack(weMustKnow)).setCopyNBT("Pos")); gmo = (GenericQuest)new GenericMultiQuest(new IQuestLogic[]{new QuestLogicScanBlock(Blocks.carrots,-1,12,24,10).setOnlyDestoryable(true),new QuestLogicScanBlock(Blocks.potatoes,-1,12,24,10).setOnlyDestoryable(true)},"gmo",0).setAutoComplete(true).setSequential(true).addQuestRewards(new ItemStackReward(MatterOverdrive.androidPartsFactory.addAttributeToPart(MatterOverdrive.androidPartsFactory.addAttributeToPart(new ItemStack(MatterOverdriveItems.tritaniumSpine),new AttributeModifier(SharedMonsterAttributes.maxHealth.getAttributeUnlocalizedName(), 5, 0)),new AttributeModifier(AndroidAttributes.attributeGlitchTime.getAttributeUnlocalizedName(), -1, 2)).setStackDisplayName("Hardened Tritanium Spine"))); } private static void initModdedQuests() { toThePowerOf = (GenericQuest)new GenericQuest(new QuestLogicCraft(new QuestItem[]{ new QuestItem("BigReactors:BRReactorPart","BigReactors"), new QuestItem("ExtraUtilities:generator","ExtraUtilities",1,1), new QuestItem(new ItemStack(MatterOverdriveItems.battery)) },0,0,120).setRandomItem(false).setAutoComplete(true),"to_the_power_of",0).addQuestRewards(new ItemStackReward(MatterOverdriveItems.tritanium_ingot,10),new ItemStackReward(MatterOverdriveItems.tritanium_plate,4)); } public static void register(FMLInitializationEvent event, Quests quests) { registerMatterOverdriveQuests(quests); registerModdedQuests(quests); } private static void registerMatterOverdriveQuests(Quests quests) { quests.registerQuest("kill_androids",killAndroids); quests.registerQuest("cocktail_of_ascension",cocktailOfAscension); quests.registerQuest("sacrifice",sacrifice); quests.registerQuest("department_of_agriculture",departmentOfAgriculture); quests.registerQuest("weapons_of_war",weaponsOfWar); quests.registerQuest("one_true_love",oneTrueLove); quests.registerQuest("puny_humans",punyHumans); quests.registerQuest("is_it_really_me",is_it_really_me); quests.registerQuest("beast_belly",beast_belly); quests.registerQuest("crash_landing",crashLanding); quests.registerQuest("weMustKnow",weMustKnow); quests.registerQuest("gmo",gmo); contractGeneration.add(new WeightedRandomQuest(killAndroids,100)); contractGeneration.add(new WeightedRandomQuest(sacrifice,100)); contractGeneration.add(new WeightedRandomQuest(departmentOfAgriculture,100)); contractGeneration.add(new WeightedRandomQuest(weaponsOfWar,80)); contractGeneration.add(new WeightedRandomQuest(oneTrueLove,100)); contractGeneration.add(new WeightedRandomQuest(is_it_really_me,80)); contractGeneration.add(new WeightedRandomQuest(beast_belly,60)); } private static void registerModdedQuests(Quests quests) { quests.registerQuest("to_the_power_of",toThePowerOf); } }