more valentines :)

This commit is contained in:
Cheese 2016-02-07 13:27:53 +11:00
parent 690c2acce8
commit a35a9ea31f
5 changed files with 252 additions and 43 deletions

View File

@ -6,49 +6,59 @@ public enum ValItem
{
FLOWER1("Red Rose",
"She will love this bouquet of roses!",
Material.RED_ROSE),
Material.RED_ROSE, 0),
FLOWER2("Dandelion",
"Oh my, these flowers smell great!",
Material.YELLOW_FLOWER),
"I hope she's not allergic to these!",
Material.YELLOW_FLOWER, 0),
FLOWER3("Other Flower",
"MOO",
Material.REDSTONE),
FLOWER3("Blue Orchid",
"Thank you! These are her favourites!",
Material.RED_ROSE, 1),
WINE("Red Wine",
"This will go great with our dinner!",
Material.POTION),
WINE("Blue Wine",
"This will go great with our steak dinner!",
Material.POTION, 0),
GRASS("Organic Grass",
"Only the best for my date!",
Material.LONG_GRASS),
GRASS("Organic Free Range Grass",
"Yum! This is much tastier than caged grass!",
Material.LONG_GRASS, 1),
DIAMONDS("Diamond Earings",
"An expensive, but worthwhile gift!",
Material.DIAMOND),
"I saved up for months for this gift!",
Material.DIAMOND, 0),
EMERALDS("Emerald Necklace",
"Such necklace, many wow!",
Material.EMERALD),
EMERALDS("Cold Hard Cash",
"They say love don't cost a thing. That's a lie!",
Material.EMERALD, 0),
BOOK("Book of Poetry",
BOOK("Love Poems",
"I will use impress her with poetry!",
Material.BOOK),
Material.BOOK, 0),
WATCH("Fancy Pocket Watch",
"This sure looks good on me!",
Material.WATCH);
"This Moolex Watch sure looks good on me!",
Material.WATCH, 0),
LEASH("Checkered Neck Tie",
"Phew, you found my tie! This restaurant is fancy!",
Material.LEASH, 0),
SADDLE("Saddle",
"Oh, uh... that's for later.",
Material.LEASH, 0);
private String _title;
private String _endText;
private Material _item;
private byte _itemByte;
ValItem(String title, String endText, Material item)
ValItem(String title, String endText, Material item, int data)
{
_title = title;
_item = item;
_endText = endText;
_itemByte = (byte)data;
}
public String getTitle()

View File

@ -58,6 +58,7 @@ import nautilus.game.arcade.game.Game.GameState;
import nautilus.game.arcade.game.games.gladiators.tutorial.TutorialGladiators;
import nautilus.game.arcade.game.games.valentines.kit.KitMasterOfLove;
import nautilus.game.arcade.game.games.valentines.tutorial.TutorialValentines;
import nautilus.game.arcade.gametutorial.events.GameTutorialStartEvent;
import nautilus.game.arcade.kit.Kit;
public class Valentines extends SoloGame
@ -119,7 +120,7 @@ public class Valentines extends SoloGame
this.HungerSet = 20;
this.HealthSet = 20;
EnableTutorials = false;
EnableTutorials = true;
try
@ -179,13 +180,6 @@ public class Valentines extends SoloGame
GetTeamList().get(0).setTutorial(new TutorialValentines(this, Manager));
}
@EventHandler
public void tutorialUpdate(UpdateEvent event)
{
TutorialValentines tutorial = (TutorialValentines) GetTeamList().get(0).getTutorial();
tutorial.update(event);
}
@EventHandler
public void knockback(CustomDamageEvent event)
{
@ -675,10 +669,10 @@ public class Valentines extends SoloGame
//Announce
if (_pigs.size() > 1)
UtilTextMiddle.display("Round " + _round, _item.getTitle(), 0, 80, 20);
UtilTextMiddle.display(C.cYellow + "Round " + _round, _item.getTitle(), 0, 80, 20);
else
{
UtilTextMiddle.display("Final Round", "Capture the Pig!", 0, 80, 20);
UtilTextMiddle.display(C.cYellow + "Final Round", "Capture the Pig!", 0, 80, 20);
for (Player player : GetPlayers(true))
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.SADDLE, (byte)0, 1, "Pig Saddle"));

View File

@ -14,10 +14,15 @@ public class TutorialPhaseValentines extends TutorialPhase
super(new TutorialText[]
{
new TutorialText(C.cRed + "Moolanie", "Calvin! Did you forget Valentines Day again?!", 1, Sound.COW_IDLE),
new TutorialText(C.cGreen + "Calvin", "...of course not!", 2, Sound.COW_IDLE),
new TutorialText(C.cGreen + "Calvin", "Of course not!!!", 2, Sound.COW_IDLE),
new TutorialText(C.cGreen + "Calvin", "I promise this year will be amazing!", 3, Sound.COW_IDLE),
new TutorialText(C.cRed + "Moolanie", "It better be, or we're finished...", 4, Sound.COW_IDLE),
new TutorialText(C.cGreen + "Calvin", "Good thing I prepared for this!", 5, Sound.COW_IDLE),
new TutorialText(C.cGreen + "Calvin", "WHAT?!", 6, Sound.COW_IDLE),
new TutorialText(C.cGreen + "Calvin", "NO!!", 7, Sound.COW_IDLE),
new TutorialText(C.cGreen + "Calvin", "SOMEBODY HELP ME!", 8, Sound.COW_IDLE),
new TutorialText(C.cGreen + "Calvin", "I'M BEING ROBBED!", 9, Sound.COW_IDLE),
});
}

View File

@ -1,13 +1,26 @@
package nautilus.game.arcade.game.games.valentines.tutorial;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map.Entry;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Cow;
import org.bukkit.entity.Item;
import org.bukkit.entity.MushroomCow;
import org.bukkit.entity.Pig;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTextMiddle;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.game.games.typewars.tutorial.TutorialPhaseTypeWars;
import nautilus.game.arcade.game.games.valentines.ValItem;
import nautilus.game.arcade.game.games.valentines.Valentines;
import nautilus.game.arcade.gametutorial.GameTutorial;
import nautilus.game.arcade.gametutorial.TutorialPhase;
@ -18,17 +31,193 @@ public class TutorialValentines extends GameTutorial
private Cow _cowBoy;
private Cow _cowGirl;
private ArrayList<Pig> _pigs = new ArrayList<Pig>();
private HashMap<Pig, Integer> _pigs = new HashMap<Pig, Integer>();
private Location _pigSpawn;
private Location _pigWaypointA;
private Location _pigWaypointB;
public TutorialValentines(Valentines valentines, ArcadeManager manager)
{
super(manager, new TutorialPhase[]{new TutorialPhaseValentines()});
Host = valentines;
PlayTutorialSounds = true;
}
public void update(UpdateEvent event)
@Override
public void onTick(int tick)
{
if (!hasStarted())
return;
if (getCurrentPhase() == null || getCurrentPhase().getCurrentText() == null)
return;
cowGirlUpdate(tick);
cowBoyUpdate(tick);
pigUpdate(tick);
lookUpdate();
}
private void lookUpdate()
{
if (getCurrentPhase().getCurrentText().ID() == 2)
getPhase(1).setTarget(_cowBoy.getLocation().add(0, 2, 0));
if (getCurrentPhase().getCurrentText().ID() == 3)
getPhase(1).setTarget(_cowBoy.getLocation().add(0, 2, 0));
if (getCurrentPhase().getCurrentText().ID() == 4)
getPhase(1).setTarget(Host.WorldData.GetDataLocs("RED").get(0).clone().add(0, 2, 0));
if (getCurrentPhase().getCurrentText().ID() == 5)
getPhase(1).setTarget(_pigWaypointA.clone().add(0, 2, 0));
}
private void cowGirlUpdate(int tick)
{
if (getCurrentPhase().getCurrentText().ID() >= 4)
{
Location loc = _cowGirl.getLocation().add(UtilAlg.getTrajectory(_pigWaypointA, _cowGirl.getLocation()).multiply(5));
UtilEnt.CreatureMoveFast(_cowGirl, loc, 1.4f);
}
}
private void cowBoyUpdate(int tick)
{
if (getCurrentPhase().getCurrentText().ID() == 5)
{
Location loc = _cowBoy.getLocation().add(UtilAlg.getTrajectory(_cowBoy.getLocation(), _pigSpawn).multiply(5));
UtilEnt.CreatureMoveFast(_cowBoy, loc, 1f);
}
}
private void pigUpdate(int tick)
{
//Pigs
if (getCurrentPhase().getCurrentText().ID() > 5)
{
//Spawn
if (_pigs.size() < 5 && tick % 20 == 0)
{
Host.CreatureAllowOverride = true;
//Spawn
Pig pig = _pigSpawn.getWorld().spawn(_pigSpawn, Pig.class);
UtilEnt.Vegetate(pig);
//Item
Item item = pig.getWorld().dropItem(pig.getLocation(), new ItemStack(Material.CHEST));
pig.setPassenger(item);
_pigs.put(pig, 0);;
Host.CreatureAllowOverride = false;
}
//Move
for (Entry<Pig,Integer> data : _pigs.entrySet())
{
//Move
if (data.getValue().intValue() == 0)
{
if (UtilMath.offset(data.getKey().getLocation(), _pigWaypointA) > 1)
{
UtilEnt.CreatureMoveFast(data.getKey(), _pigWaypointA, 1.4f);
}
else
{
data.setValue(1);
}
}
if (data.getValue().intValue() == 1)
{
if (UtilMath.offset(data.getKey().getLocation(), _pigWaypointB) > 1)
{
UtilEnt.CreatureMoveFast(data.getKey(), _pigWaypointB, 1.2f);
}
else
{
data.setValue(2);
}
}
//Oink
if (Math.random() > 0.98)
{
data.getKey().getWorld().playSound(data.getKey().getLocation(), Sound.PIG_IDLE, 1.5f, 1f);
}
}
}
}
@Override
public void onStart()
{
//Pig Spawn
_pigSpawn = Host.WorldData.GetDataLocs("PINK").get(0);
//Pig Waypoints
if (UtilMath.offset(_pigSpawn, Host.WorldData.GetDataLocs("ORANGE").get(0)) <
UtilMath.offset(_pigSpawn, Host.WorldData.GetDataLocs("ORANGE").get(1)))
{
_pigWaypointA = Host.WorldData.GetDataLocs("ORANGE").get(0);
_pigWaypointB = Host.WorldData.GetDataLocs("ORANGE").get(1);
}
else
{
_pigWaypointA = Host.WorldData.GetDataLocs("ORANGE").get(1);
_pigWaypointB = Host.WorldData.GetDataLocs("ORANGE").get(0);
}
//Spawn Cows
Host.CreatureAllowOverride = true;
_cowBoy = _pigSpawn.getWorld().spawn(Host.WorldData.GetDataLocs("BROWN").get(0), Cow.class);
_cowBoy.setCustomName(C.cGreenB + "Calvin");
_cowBoy.setCustomNameVisible(true);
UtilEnt.Vegetate(_cowBoy);
_cowGirl = _pigSpawn.getWorld().spawn(Host.WorldData.GetDataLocs("RED").get(0), MushroomCow.class);
_cowGirl.setCustomName(C.cRedB + "Moolanie");
_cowGirl.setCustomNameVisible(true);
UtilEnt.Vegetate(_cowGirl);
Host.CreatureAllowOverride = false;
//Player Data
getPhase(1).setLocation(Host.WorldData.GetDataLocs("WHITE").get(0));
getPhase(1).setTarget(_cowGirl.getLocation().add(0, 2, 0));
}
@Override
public void onEnd()
{
_cowBoy.remove();
_cowGirl.remove();
for (Pig pig : _pigs.keySet())
{
if (pig.getPassenger() != null)
pig.getPassenger().remove();
pig.remove();
}
_pigs.clear();
for (Player player : getPlayers().keySet())
{
Host.Manager.GetCondition().Factory().Blind("Tutorial End", player, player, 2, 0, false, false, false);
}
UtilTextMiddle.display(C.cGreenB + "Calvin", "Get my things back from the pigs!", 0, 80, 20, UtilServer.getPlayers());
}
}

View File

@ -62,7 +62,7 @@ public abstract class TutorialPhase
/**
* preparing Pitch/Yaw of the location
*/
private void prepareLocations()
public void prepareLocations()
{
Vector vector = new Vector(_target.getBlockX() - _location.getBlockX(), _target.getBlockY() - _location.getBlockY(), _target.getBlockZ() - _location.getBlockZ());
float pitch = UtilAlg.GetPitch(vector);
@ -158,7 +158,7 @@ public abstract class TutorialPhase
i++;
}
displayMessage(text);
UtilTextMiddle.display("", text.getText(), 0, text.getStayTime(), 0, players);
UtilTextMiddle.display(text.getTitle(), text.getText(), 0, text.getStayTime(), 0, players);
try
{
Thread.sleep(text.getStayTime() * 50);
@ -222,6 +222,11 @@ public abstract class TutorialPhase
return _text;
}
public TutorialText getCurrentText()
{
return _currentText;
}
public void setText(TutorialText[] text)
{
_text = text;
@ -240,11 +245,17 @@ public abstract class TutorialPhase
public void setLocation(Location location)
{
_location = location;
if (_location != null && _target != null)
prepareLocations();
}
public void setTarget(Location target)
{
_target = target;
if (_location != null && _target != null)
prepareLocations();
}
public GameTutorial getTutorial()