RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
CerberusActivity.java
1package com.osroyale.content.activity.impl;
2
3import com.osroyale.content.activity.Activity;
4import com.osroyale.content.activity.ActivityType;
5import com.osroyale.game.Animation;
6import com.osroyale.game.Graphic;
7import com.osroyale.game.world.World;
8import com.osroyale.game.world.entity.mob.Mob;
9import com.osroyale.game.world.entity.mob.npc.Npc;
10import com.osroyale.game.world.entity.mob.npc.NpcDeath;
11import com.osroyale.game.world.entity.mob.player.Player;
12import com.osroyale.game.world.object.CustomGameObject;
13import com.osroyale.game.world.object.GameObject;
14import com.osroyale.game.world.position.Area;
15import com.osroyale.game.world.position.Position;
16
17import java.util.ArrayList;
18import java.util.List;
19
52
53public class CerberusActivity extends Activity {
54 private static final GameObject[] OBJECTS = {new CustomGameObject(23105, new Position(1241, 1242)), new CustomGameObject(23105, new Position(1240, 1242)), new CustomGameObject(23105, new Position(1239, 1242)), new CustomGameObject(23105, new Position(1240, 1236))};
55 private final Player player;
56 private Npc cerberus = new Npc(5862, new Position(1240, 1252));
57 private List<GameObject> objectList = new ArrayList<>(4);
58
59 private CerberusActivity(Player player, int instance) {
60 super(1, instance);
61 this.player = player;
62 }
63
64 public static CerberusActivity create(Player player) {
65 CerberusActivity activity = new CerberusActivity(player, player.playerAssistant.instance());
66 activity.add(player);
67 activity.resetCooldown();
68 return activity;
69 }
70
71 @Override
72 protected void start() {
73 for (GameObject object : OBJECTS) {
74 object.register();
75 objectList.add(object);
76 }
77
78 add(cerberus);
79 pause();
80 }
81
82 @Override
83 public void finish() {
84 cleanup();
85 remove(player);
86 }
87
88 @Override
89 public void cleanup() {
90 for (GameObject object : objectList) {
91 System.out.println("unregistering " + object.getId());
92 object.unregister();
93 }
94
95 objectList.clear();
96 remove(cerberus);
97 }
98
99 @Override
100 public void onDeath(Mob mob) {
101 if (mob.isPlayer()) {
102 cleanup();
103
104 player.move(new Position(3087, 3497));
105
106 player.animate(Animation.RESET, true);
107 player.graphic(Graphic.RESET, true);
108 return;
109 }
110
111 World.schedule(new NpcDeath(mob.getNpc(), () -> {
112 finish();
113 restart(10, () -> {
114 if (Area.inCerberus(player)) {
115 create(player);
116 } else {
117 remove(player);
118 }
119 });
120 }));
121 }
122
123 @Override
124 public void onRegionChange(Player player) {
125 if (!Area.inCerberus(player)) {
126 cleanup();
127 remove(player);
128 }
129 }
130
131 @Override
132 public void onLogout(Player player) {
133 cleanup();
134 remove(player);
135 }
136
137 @Override
138 public boolean canTeleport(Player player) {
139 return true;
140 }
141
142 @Override
143 public ActivityType getType() {
144 return ActivityType.CERBERUS;
145 }
146}
Activity(int cooldown, int instance)
Definition Activity.java:92
static void schedule(Task task)
Definition World.java:284