Server base: RiotScape
Features
- Item / NPC / Object definitions loaded from the cache
- Verified object clicks
- Alot of skills
- Some minigames (Pest Control, fight pits, godwars, fight caves, start of custom assault)
- Custom abstract boss system
- Load of boss addons
- Custom abstract task system
- Custom abstract clue scroll system (needs to be implemented)
- Price checker system, its terrible tho
- Chewed bones system
- Mystery box basic system
- Bones on altar
- Much more
Alot of the content in this server is written purely by me, some of the content is from other servers - > (Trading, banking from project no-doze)
I don't intend for this thread to become a dick messuring contest, like 90% of the threads in this section, so pls dont
Code example;
Code:
package org.sabsabionline.sso.model.mob.impl;
import org.sabsabionline.event.Event;
import org.sabsabionline.sso.World;
import org.sabsabionline.sso.model.Client;
import org.sabsabionline.sso.model.combat.formula.MeleeFo rmulas;
import org.sabsabionline.sso.model.mob.NPC;
import org.sabsabionline.sso.model.mob.SpecialNPC;
import org.sabsabionline.sso.model.player.PlayerHandler;
import org.sabsabionline.util.Misc;
public class Avatar_of_Destruction extends SpecialNPC {
private static boolean specialAttack = false;
@Override
public void execute(Client client, NPC n) {
n.startAnimation(11197);
int attack = Misc.random(20);
if (attack > 15) {
specialAttack = true;
} else {
specialAttack = false;
}
if (specialAttack) {
n.gfx0(1210);
for (int i = 0; i < PlayerHandler.players.length; i++) {
if (PlayerHandler.players[i] == null)
continue;
Client player = (Client) PlayerHandler.players[i];
if (n.distanceToPoint(player.absX, player.absY) > 10) {
continue;
}
int x = player.getX();
int y = player.getY();
player.destructionX = x;
player.destructionY = y;
int endY = (n.getX() - x) * -1;
int endX = (n.getY() - y) * -1;
player.getPA().createPlayersProjectile(n.getX(), n.getY(),
endX, endY, 50, 110, 1211, 0, 0, 0, 80, 0);
}
}
World.getWorld().submit(new Event(specialAttack ? 2300 : 1000) {
@Override
public void execute() {
int damage = Misc.random(25);
if (client.prayerActive()[18]) {
damage = Misc.random(5);
}
if (Misc.random((int) MeleeFormulas.getMeleeDefence(client)) > Misc
.random(n.attack)) {
damage = 0;
}
if (specialAttack) {
for (int i = 0; i < PlayerHandler.players.length; i++) {
if (PlayerHandler.players[i] == null)
continue;
Client player = (Client) PlayerHandler.players[i];
if (n.distanceToPoint(player.absX, player.absY) > 10) {
continue;
}
if (player.getX() == player.destructionX
&& player.getY() == player.destructionY) {
damage = Misc.random(50);
if (damage > player.getLevel()[3]) {
damage = player.getLevel()[3];
}
player.dealDamage(damage);
player.handleHitMask(damage);
player.getPA().refreshSkill(3);
player.hitUpdateRequired = true;
player.updateRequired = true;
player.destructionX = -1;
player.destructionY = -1;
}
}
this.stop();
return;
}
if (damage > client.getLevel()[3]) {
damage = client.getLevel()[3];
}
client.dealDamage(damage);
client.handleHitMask(damage);
client.getPA().refreshSkill(3);
client.hitUpdateRequired = true;
client.updateRequired = true;
this.stop();
}
});
}
}
When it comes to stability I would say it runs decent, i haven't experienced any lag, the server has run for 1 week with 20+ players without crashing, so yeah.