Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Alphadin

Pages: [1] 2 3 4 5 6 ... 10
1
Add-Ons / Pick-Up Powerups Re-Release
« on: July 19, 2019, 11:18:30 PM »

oh look blockland screencap has fps ignore that
This is just a rerelease of the previous PickUp Powerups, but with a few changes. Included are the Health, Shield, Hop-Up (Launches upward), Velocity (Launches in direction of movement), and a Doubler (Doubles Point Gain).

I adjusted the Health and Shield Pick-Ups to function differently. On an unnamed brick, the health pickup will recover 25% max HP and the shield pickup will block an additional 60% max hp in damage. Naming a brick with a number (doesn't matter what, just a number) will change the value of that shield/health pickup to that value (setting a brick name to 100 will make a pickup shield for 100 damage or heal up 100 damage).

Naming a brick with an m and a space followed by a # will make that pickup heal/shield for a percentage. (setting a brick name to "m_50" will make a pickup shield for 50% max HP or heal for that amount).
On the boring technical side, removed all uses of eval.

Download

2
Off Topic / extremely cursed windows shortcut
« on: January 20, 2019, 10:59:26 AM »

3
Off Topic / have you ever used the help button?
« on: May 14, 2018, 03:51:21 AM »
other than by clicking on it by accident?
it references some features that aren't applicable anymore


or used at all

4
Add-Ons / Discount Anime Weapons Emporium - Archer's Arm
« on: October 21, 2017, 02:24:21 AM »
Have you ever wanted to be a massive weeb?
Have you ever wanted to fist a man so hard it sounds like you're shooting him with each punch?
Regardless of your answers to the prior questions, I have the answer to all your problems! It's as its card suggests, The Star! Behold!
STAR PLATINUM
With Visolator reviving his Randomizer I felt an urge to finish/fix/make a bunch of nonsensical add-ons. My current best idea is a frying pan with weird properties. Send me a PM with an idea or something if you have anything I guess?
Features
  • Action Packed Super Fast Alternating 5 damage fists!
  • Every 5th consecutive hit on players/bots does bonus damage and knocks away filthy stand users with a satisfying ORA!
  • ORAORAORAORAORAORA Action!
  • Reflects most* projectiles the blockhead faces while active!
  • Low-Quality Stand poised behind the blockhead!
*Most because some projectiles move too fast, and most because checking too oftenly for projectiles would probably hella lag the server. On that note, I haven't been able to stress test this, so who knows what exactly the limit is ¯\_(ツ)_/¯

Here's a bit of an outdated video, not showcasing the bonus damage and correct damage values/fire rate.
I also made it not play that intro every time you pull it out.
https://leopard.hosting/dl/lhcwn/Weapon_Star_Platinum.zip

So as I pray, Unlimited...
BLADE WORKS!
The Arm of Archer
Features
  • Burly arm of a dark skinned male!
  • Copy the weapon an enemy is holding like some sort of faker!
  • Wonderfully ripped audio!
  • Reflects most* projectiles the blockhead faces while active!

video displaying the fine mechanical nuances of copying someone's weapon

https://leopard.hosting/dl/rxozf/Weapon_Archer.zip

5
Alright I want this stuff out there. But I wanna do it with s t y l e. Prepare your star fish big boys because I'm going to slam this goddamn thread with some hella development concepts and run down. Do I suck at it, maybe, lets see who has the big developer richard and criticize what I've done yeah? So finally, here it is. BBB:R: Exposed.

Alright what the forget do I code in? I code in Sublime Text 3 and use the TS highlighting. Or used to. I don't code much anymore. Whatever.

This is the baller ass folder set up. Why the forget am I doing this? Let's look at the server.cs okay boys? Here's the whole loving server.cs, but this is what we need. I don't give a stuff about what I'm doing elsewhere, we'll get there in a second.
Code: (server.cs) [Select]
$BBB::Path = "Add-Ons/Gamemode_BBBRedux/";
function BBB_Init(%dir)
{
    %rdir = $BBB::Path @ %dir @ "/";
    echo(" *Loading scripts ("@%dir@").");
    for(%file=findFirstFile(%rdir @ "*.cs"); %file !$= ""; %file=findNextFile(%rdir @ "*.cs"))
    {
        if(!isFile(%file)) continue;
            exec(%file);
    }
    echo(" *Finished.");
}
BBB_Init("Systems");
BBB_Init("PlayerScripts");
BBB_Init("Equipment");
See this stuff? I don't remember who the forget wrote it. I sure as hell didn't. See that BBB_Init? It goes spider on those folder's asses and runs any *.cs file it can find, that's some spicy stuff ain't it? Systems contains all my scripts relating to making the gamemode game. The PlayerScripts folder is hella big richard, it contains the player type, top ten anime shocks, and Equipment contains all code relating to any equipment I have. Alright let's get to the goddamn coolaid stuff of the server.cs.
Code: (server.cs) [Select]
if(!isObject(botSimGroup))
{
    new SimSet(botSimGroup);
}
exec("./Sounds/Sounds.cs");
exec("./Equipment/Particles.cs");
//Creates BBB's heart if it doesn't exist already for whatever reason.
if(!isObject(BBB_System))
{
    %BBB = new scriptObject(BBB_System)
    {
        match = false;
        traitorList = "";
        TraitorCount = 0;
        InnocentCount = 0;
        minutes = 0;
        seconds = 0;
        maxSeconds = 0;
        timeDisplay = "0:00";
        totalEquipment = 0;
        currentDeathID = 0;
    };
    for(%i = 0; %i < $Pref::Server::MaxPlayers; %i++)
        %BBB.DeathDetails[%i] = new ScriptObject(){class = "DeathObject";};
    %BBB.timer(0,30);
    %BBB.MarkList[10] = "||||||||||";
    %BBB.MarkList[9] = "|||||||||<color:ff0000>|";
    %BBB.MarkList[8] = "||||||||<color:ff0000>||";
    %BBB.MarkList[7] = "|||||||<color:ff0000>|||";
    %BBB.MarkList[6] = "||||||<color:ff0000>||||";
    %BBB.MarkList[5] = "|||||<color:ff0000>|||||";
    %BBB.MarkList[4] = "||||<color:ff0000>||||||";
    %BBB.MarkList[3] = "|||<color:ff0000>|||||||";
    %BBB.MarkList[2] = "||<color:ff0000>||||||||";
    %BBB.MarkList[1] = "|<color:ff0000>|||||||||";
    %BBB.RoleColor["Traitor"] = "\c0";
    %BBB.RoleColor["Innocent"] = "\c2";
    %BBB.RoleColor["Detective"] = "\c1";
}
So Alphadin, yo, what the forget? the botSimGroup contains all the bots so we can loop through that stuff and delete them later. What do we use bots for? We make corpses and microwaves with this.

I make use of a ScriptableObject to store all game necessary data. Match determines if the game is currently in session, the traitorlist is a list of traitors by name, duh, the TraitorCount keeps track of how many Traitors are present, and how many Innocents. By the way, detectives are technically innocents, so there's no detective count. Also I'm not very smart, so instead of keeping track of game time in seconds, I also keep track of time in minutes. maxSeconds determines how long the round will be in seconds. I don't know why I split these up. The TimeDisplay is a amalgamation of the current amount of minutes and seconds left, but formatted. totalEquipment is a count of how many equipment is currently in the game. CurrentDeath ID? We'll talk about that later friends. I'm making this up as I go, and I honestly don't remember. The rest is just constants we need, one for the non-gui healthbar and non-gui colors for roles. Alright enough of that bullstuff, onto the spicy innards of the gamemode.

Alright you forgets, you ready for the CoreFunctions.cs? It's boring, I wrote comments just for you guys. Take them. I don't want them. I want to talk about something a little more interesting.
Code: (CoreSystem.cs) [Select]
function MiniGameSO::messageAllExcept(%a,%b,%c,%d,%e,%f,%g,%h,%j,%k,%l,%m,%n,%o,%p)
{
if(%c $= 'MsgClientKilled')
return; //Stops from displaying death messages
parent::messageAllExcept(%a,%b,%c,%d,%e,%f,%g,%h,%j,%k,%l,%m,%n,%o,%p);
}
function messageClient(%a,%b,%c,%d,%e,%f,%g,%h)
{
if(%b $= 'MsgYourDeath')
return; //Stops from displaying personal death messages.
parent::messageClient(%a,%b,%c,%d,%e,%f,%g,%h);
}
This took a while to get my hands on, and it's honestly a handful. This is easily one of the most important features, so I'll highlight it here.
This code will hide all chat based CIs and death messages.
What can you make use of it? Who loving knows.
Code: (CoreSystem.cs) [Select]
function serverCmdBBBR_SendHandShake(%client)
{
%client.hasBBBRClient = true;
}
function gameConnection::autoAdminCheck(%client)
{
commandToClient(%client,'BBBR_ReceiveHandShake');
parent::autoAdminCheck(%client);
}
function gameConnection::onConnectionDropped(%client)
{
if(isObject(%client.player))
{
%client.player.removePlayer(BBB_System); //Makes it count as a death
%BBB.testVictory(); //Let's see if we won!
}
parent::onConnectionDropped(%client);
}
function gameConnection::onDeath(%client, %killerPlayer, %killer, %damageType, %a)
{
%BBB = BBB_System;
%client.player.removePlayer(%BBB); //Removes the player from the list of the living and sets them as dead on friendly T UI
%client.player.createCorpse(%damageType); //Creates a body with the outline of their death circumstances.
%BBB.testVictory(); //Checks if anyone one
%client.schedule(100,freeCamera); //Sets someone in spectator mode.
parent::onDeath(%client, %killerPlayer, %killer, %damageType, %a);
}
function GameConnection::spawnPlayer(%client)
{
if(!%client.hasSpawnedOnce && %client.hasBBBRClient)
commandToClient(%client,'BBBR_InitializeHUD');
parent::spawnPlayer(%client);
}
function armor::onadd(%this,%player)
{
Parent::onadd(%this,%player);
if(BBB_System.match)
%player.client.clearGunk();
%player.damagerCount = 0;
}
function GameConnection::clearGunk(%client)
{
if(isObject(%client.player) && BBB_System.match)
{
%client.player.delete();
%client.freeCamera();
}
}
This network of functions is one of the most important ones. First, it lets the game take care of handshakes which manages our GUI. Then, we have to "kill" the player if they disconnect and check to see if we've finally won. It's strange. It took me a metric forgettonne of functions to find which one actually triggers when a player finally spawns. Here's a spoiler for my friends. armor::onadd. enjoy that stuff. When they spawn in a middle of a round, we get them the forget out of there.
Code: (CoreSystem.cs) [Select]
function player::damage(%obj, %sourceObject, %position, %damage, %damageType)
{
if(%obj.hasArmor)
%damage *= 0.75; //Reduces damage by 25% if they bought the quality armor.
if(%obj.role $= "" && BBB_System.match)
return; //Makes all undefined players invincible. Undefined occurs when an admin respawns themselves for whatever reason.
if(%obj.getClassName() $= "AIPlayer")
return; //Makes all bots invulnverable
if(BBB_System.match || BBB_System.resetting) //We let players damage each other inbetween round resetting, that's the best part of TTT. We don't tolerate damage before rounds though.
{
%obj.client.schedule(10,cycleUIBBB); //We start up a UI loop.
%brokenTwig = false; //Incase we DO find a copy of the playername in the list.
Now this is arguably the spicy part. We keep track of all that does damage to a person.
Code: [Select]
%name = "Environmental Damage"; //If we don't know why the forget why they took damage, it was definitely Environmental Damage
if(isObject(%sourceObject.client))
%name = %sourceObject.client.name @ " (" @ %sourceObject.client.BL_ID @ ")"; //Otherwise we pin the blame on the player who did it.
for(%i = 0; %i < %obj.damagerCount; %i ++)
{
if(%obj.damagerName[%i] $= %name)
{
%obj.damageById[%i] += %damage; //We keep track of how much damage each player does to another. This was supposed to be for logging purposes, aka if a player "RDMS" another player who had 5 HP and was just killed in the crossfire. We'll have an idea.
%brokenTwig = true;
break;
}
}
if(!%brokenTwig) //We create a definition incase the player has never hurt this player before.
{
%obj.damagerName[%obj.damagerCount] = %name;
%obj.damageById[%obj.damagerCount] = %damage;
%obj.damagerCount ++;
}
parent::damage(%obj, %sourceObject, %position, %damage, %damageType);
}
}
So yeah. BBB:R was supposed to have state of the art damage tracking. Too bad I don't remember how well it works, I think it does.

At this point I started working on corpse dealing. When we activate, if we activate on a Heal Bot/Corpse, we do what they need to do. We also needed to announce that a corpse had been found. I'm just talking about it here, here's the goddamn code.

Code: [Select]
function observer::onTrigger(%this, %obj, %trigger, %state)
{
if((BBB_System.match || BBB_System.resetting) && !isObject(%obj.getControllingClient().player) && %state == 0)
{
if(%obj.curIndex $= "")
%obj.curIndex = 0;
%client = %obj.getControllingClient();
if(%trigger == 0)
{
%obj.curIndex ++;
if(%obj.curIndex >= clientGroup.getCount())
%obj.curIndex = 0;
%recur = 0;
for(%i = %obj.curIndex; %i<clientGroup.getCount();%i++)
{
%clientC = clientGroup.getObject(%i);
if(isObject(%clientC.player))
{
%client.spectateCam(%clientC.player);
commandToClient(%client,'centerPrint',"\c6You are now spectacting\c3" SPC %clientC.name @ "\c6.",5);
%obj.curIndex = %i;
break;
}
if(%i < clientGroup.getCount() - 1)
{
%recur ++;
%i = 0;
}
}
}
if(%trigger == 4)
{
%obj.curIndex --;
if(%obj.curIndex < 0)
%obj.curIndex = clientGroup.getCount() - 1;
%recur = 0;
for(%i = %obj.curIndex; %i >= 0; %i--)
{
%clientC = clientGroup.getObject(%i);
if(isObject(%clientC.player))
{
%client.spectateCam(%clientC.player);
commandToClient(%client,'centerPrint',"\c6You are now spectacting\c3" SPC %clientC.name @ "\c6.",5);
%obj.curIndex = %i;
break;
}
if(%i == 0)
{
%recur ++;
%i = clientGroup.getCount() - 1;
}
}
}
if(%trigger == 2)
%obj.getControllingClient().freeCamera();
}
return;
}
function gameConnection::spectateCam(%client,%player)
{
%cam = %client.Camera;
if(!isObject(%cam))
return;
%cam.setMode(Corpse,%player);
%client.setControlObject(%cam);
}
function SimObject::onCameraEnterOrbit(%obj,%camera)
{
%obj.observerCount++;
}
function SimObject::onCameraLeaveOrbit(%obj,%camera)
{
%obj.observerCount--;
}
I don't remember who wrote this. I think I wrote some of it? It's been a longass while, but here's my controller for Cameras. Click and Right click to rotate between players, hit space to free cam. I'm kinda happy to have this out for friends. Make sure you package the camera code if you plan on using it.

Corpses! So we touched on those earlier. Let's touch on them now big boy style yeah?
Code: [Select]
function player::createCorpse(%player,%dT)
{
//Creates the bot
%client = %player.client;
%position = %player.getposition();
%bot = new AIPlayer()
{
datablock = PlayerStandardArmor;
position = %position;
};
//Puts the bot in the group of bots so we can clear all the bots
%bot.addBotToGroup();
//Lets us give the bot an item to die with in their hands.
%image = %player.getMountedImage(0);
%player.unMountImage(0);
//Sets the bot's appearence to the dead person.
%temp = %player;
%client.player = %bot;
%client.applyBodyColors();
%client.applyBodyParts();
%client.player = %temp;
%bot.player = %bot;
//Adds a few small aethstetics
%bot.mountImage(%image,0);
serverCMDhug(%bot);
%bot.setCrouching(true);
%bot.playDeathanimation();
if(%player.role $= "Detective")
{
%bot.mountImage(DetectiveImage,2);
for(%op = 0;$hat[%op] !$= "";%op++)
%bot.hideNode($hat[%op]); //Hides all hats.
for(%qw = 0;$accent[%qw] !$= "";%qw++)
%bot.hideNode($accent[%qw]);
}
//Gives the bot all the values of the player's death.
%bot.name = %client.name;
%bot.located = false;
%bot.role = %player.getFormattedRole();
%bot.death = $DamageType_Array[%dT];
%player.hideNode("ALL"); //Hides the dead player so we don't have to see that.
BBB_System.proccessCorpseForm(%player); //Now we go through the long process of making a very detailed death process.
}
function BBB_System::proccessCorpseForm(%BBB,%player)
{
%CorpseFiling = %BBB.DeathDetails[%BBB.currentDeathID];
for(%i = 0; %i < %player.damagerCount; %i ++)
{
%CorpseFiling.damagerName[%i] = %player.damagerName[%i];
%CorpseFiling.damageById[%i] = %player.damageById[%i];
}
%CorpseFiling.damagerCount = %player.damagerCount;
%BBB.DeathDetails[%BBB.currentDeathID] = %CorpseFiling;
%BBB.currentDeathID ++;
}
So what we're doing here, or what I was going to do, was after making a corpse look like a player, I was going to neatly file away all information. Remember that damage data we gathered earlier? We kept track of all deaths, assigning each case a unique ID. The first death, is death number 0. So when the round was ending, the idea was to loop through our "morgue" so to speak, and log all the information regarding deaths for that round, which would be stored in %BBB.DeathDetails. I never wrote it out of laziness or a lack of drive. The functionality is definitely all there I just, never brought myself to finishing what I had started.

ALRIGHT BOYS QUICK SHOUTOUT TO MY BOY PORT FOR HAVING WRITTEN THIS CODE I USED TO TRANSFER COLOR INFORMATION TO AND FROM HEX, RGB, RGB0-1
Code: [Select]
function rgbToHex( %rgb )
{
%r = _compToHex( 255 * getWord( %rgb, 0 ) );
%g = _compToHex( 255 * getWord( %rgb, 1 ) );
%b = _compToHex( 255 * getWord( %rgb, 2 ) );

return %r @ %g @ %b;
}
 
function hexToRgb( %rgb )
{
%r = _hexToComp( getSubStr( %rgb, 0, 2 ) ) / 255;
%g = _hexToComp( getSubStr( %rgb, 2, 2 ) ) / 255;
%b = _hexToComp( getSubStr( %rgb, 4, 2 ) ) / 255;

return %r SPC %g SPC %b;
}
 
function _compToHex( %comp )
{
%left = mFloor( %comp / 16 );
%comp = mFloor( %comp - %left * 16 );

%left = getSubStr( "0123456789ABCDEF", %left, 1 );
%comp = getSubStr( "0123456789ABCDEF", %comp, 1 );

return %left @ %comp;
}
 
function _hexToComp( %hex )
{
%left = getSubStr( %hex, 0 );
%comp = getSubStr( %hex, 1 );

%left = striPos( "0123456789ABCDEF", %left );
%comp = striPos( "0123456789ABCDEF", %comp );

if ( %left < 0 || %comp < 0 )
{
return 0;
}

return %left * 16 + %comp;
}
THANKS PORT YOU'RE A BOSS.

Let's talk equipment yeah?
Remember the server.cs? Good.
Code: [Select]
BBB_System.createEquipment("Armor","Armor","1 Credit\nDamage is reduced to 75% when purchased.",true,"Traitor","255 0 0",1,grantArmor,"","");
BBB_System.createEquipment("Flare","Flare Gun","1 Credit\nA Flare Gun which does 25 damage initially, and 75 over 1.5seconds.",true,"Traitor","255 128 64",1,FlareItem,3,"Item");
What the forget is going on here? This is a goddamn mess!
Nah bitch. Look over here.
Code: (ShopSystem.cs) [Select]
function BBB_System::createEquipment(%BBB,%id,%name,%desc,%buyOnce,%alliance,%color,%cost,%data,%slot,%type)
{
%itemData = new ScriptObject(){
id = %id; //Shorthand name that appears on buttons, and how people without a GUI buy
name = %name; //Full name for our lovey buyers
desc = %desc; //What exactly we can do with it
buyOnce = %buyOnce; //Can they only buy it once?
alliance = %alliance; //Who can buy it? Detectives? Traitors? Curiously enough, with how the rest of the system is set up, we could technically have an innocent shop. Food for thought.
color = %color; //What color we make the button in the shop
cost = %cost; //How many credits it costs
data = %data; //The item data OR function name
slot = %slot; //What slot # this item goes into
type = %type; //Is it an item? OR do we run a function upon purchasing?
};
%BBB.equipmentList[%BBB.totalEquipment] = %itemData;
%BBB.equipmentListById[%id] = %itemData;
%BBB.totalEquipment ++;
}
So let's look at our items real quick. The flare gun is defined as a type "Item" so we physically add an item into the buyer's inventory.
The Armor is technically not an item, so it's not type "Item", so we call the function grantArmor on the gameConnection purchasing it.
Code: [Select]
function GameConnection::grantArmor(%client)
{
%client.player.hasArmor = true;
}
This system was set in place to let people make custom equipment. Good stuff.
The shop system on the other hand, which is tightly linked to the equipment, is a goddamn headache because I designed it to function both with GUI users and without GUI users. It really hurts my head to look at so I'll just put the code as is, with what comments past Alphadin had written.

Also, on the subject, my past self did a stellar job commenting the TeamSystem.cs so I'll leave him to take care of things. Oh! Yeah, by the way...
THANKS MR. NOßODY FOR THE REALLY AWESOME SLEUTHING HAT.

anyways, that's all I give a stuff to write about. I might look at this later and cry, who knows.

You might be wondering, hey Alph? I came here for the gamemode, wtf are you doing where's my BBB:R :angery:. I'm a special snowflake and I deserve attention.

I'm not giving it to anyone who doesn't have a clue to fix issues if they crop up as they play with it, I want people with modding knowledge to poke at it, not a server hoster. I don't want to submit this incomplete gamemode as a potential hosting gamemode, I'm not okay with distributing the files for that. If I know you're a capable modder or just someone I fancy, hit me up with a PM. The full gamemode files are all yours. Do with them what you want. Release the stuff if you want for whatever goddamn reason, break my heart. I didn't release an incomplete gamemode this time around. Make secret trades with it. I don't give a stuff, it's yours now.

6
Off Topic / Help Alphadin with yet another survey
« on: February 07, 2017, 12:00:29 PM »
Like music? Then select from a narrow range of music genres

Disclaimer: I didn't make this poll so I can't do anything about the options.

8
Note, these questions are (somewhat/kinda/mehly) political in nature.
Before anything is said, I had almost nothing to do with the questions/answer choices.
Please be serious if answering, thanks dudes.

You guys are the best.

9
Off Topic / Homestuck ended today after 7 years
« on: April 12, 2016, 11:00:24 PM »
Happy 7th anniversary

Like it or hate it, it finally ended.

I would like to call the series extremely tenacious but, after some bored calculations:
Homestuck's 7 years included 2 leap years, so the series ran a total of 2775 days.
In those 2775 days, 885 days were spent as major downtime, meaning Homestuck wasn't actually active for 34.61% of its life.
The biggest pause, 366 days, took up 14.31% of its life.
The second biggest pause, 244 days, took up 9.54% of its life.
The small pauses collective took up 261 days, or 10.21% of its life.

happy 4/13.

10
Gallery / The Star XVII - Star Platinum
« on: February 03, 2016, 09:54:00 PM »
ORAORAORAORAORAORAORAORAORAORAORAORAORA
coming soon to a blockland near you

11
Modification Help / Offsetting a vector
« on: January 31, 2016, 06:30:54 PM »
Alright, I'm absolutely stuff with vectors.
I'm trying to get a position, and then offset it by "X Y Z" coordinates, but to keep said offset for every rotation it could possibly be in.

The offset coordinates I'm looking for in this case is (-1,1) and (1,1), a whole 1 X unit offset from the 1 Y unit, as it's to the "left" here, and a whole -1 X unit offset from the 1 Y unit, as it's to the "right" here.

Since the line here is rotated by 45 degrees, the new coordinate set is offset too.
The offset coordinate here would be (0,~1.4) for the offset line going "left" from the solid line. The other offset coordinate would be (~1.4,0) for the offset line going "right" from the solid line.

This makes good sense in a 2d space, but I have no idea how to implement it into a 3d environment.

What I'm ultimately trying to accomplish here is to take a muzzlePoint, and then fire a bullet from the left, and from the right, as I haven't been able to find anything to refer to several different muzzlePoints in one image.

12
Games / League of Legends - Sylas? New Season? You bet.
« on: January 13, 2016, 05:02:04 PM »

Our Discord, join us!
(Or don't you boosted monkey)
| Website | Wiki | Board | Rules | Register | Download | YouTube | Twitch |


What is League of Legends?
League of Legends is a fast-paced, competitive online game that blends the speed and intensity of an RTS with RPG elements. Two teams of powerful champions, each with a unique design and playstyle, battle head-to-head across multiple battlefields and game modes. With an ever-expanding roster of champions, frequent updates and a thriving tournament scene, League of Legends offers endless replayability for players of every skill level.



Maps
Summoner's Rift: League of Legends' flagship Field of Justice, Summoner's Rift, remains the battleground of choice for the majority of players. Two teams of five champions battle across three lanes and an expansive jungle that holds powerful buffs and major neutral objectives. An extended laning phase and large-scale team fights are characteristic of this battlefield.

The Twisted Treeline: The second Field of Justice added to League of Legends, Twisted Treeline, features two lanes and teams of three champions. Champions begin play with higher starting gold totals than Summoner's Rift, sparking fast engagements and frequent team fights. A single, centralized jungle between the lanes holds capturable altars that encourage battle over neutral objectives and frequent ganking.

Howling Abyss: Inspired by the popular community game mode All Random All Mid, the Howling Abyss features two teams of five champions battling over a single lane. The summoner platform provides no healing and shopping is strictly limited to periods after your champion has died. This pushes the map toward aggressive, high-intensity gameplay centered on team fights.

The Crystal Scar: The premier map of the Dominion game mode, the Crystal Scar features five capture points arranged in a circle around a powerful team buff. Champions begin play at level 3, leveling up and acquiring gold rapidly as the game progresses. Small-scale skirmishes and huge kill scores are the hallmarks of this fast-paced battleground.




Sometimes, everybody looks like a boosted animal.




I trust that you will weave the right balance. Safe journey, Little Sparrow.




Mid Season Magic Update




To ascend the Mountain, I had to let go...




Cower. Worship. Marvel. All appropriate responses, really.



Lunar Revel 2016

With the rising of a new dawn, comes forth a new year. Revel in the moonlight to celebrate days of past, and to better fathom the Sun of tomorrow.



Jihn - The Virtuoso


I will make you beautiful. I will make you perfect.


i have 0 plans to do a player list but incase it catches my fancy post summoner names

all of this shamelessly stolen from xealyth may he rest in peace

13
Gallery / Proof of Concept - Top Down Singeplayer Gamemode - Flags
« on: January 02, 2016, 10:42:07 PM »
original idea do not steal
EDIT:
I played with the idea a bit more and came up with a quest system that uses flags, there's some flaws but the idea's there
newvidwatchplz


can never have enough dashes in a title

14
Modification Help / Raycasts and StaticShapes
« on: December 31, 2015, 03:55:26 PM »
I'm curious as to what's necessary for the two to interact, $TypeMasks::StaticShapeObjectType is implies that there's a working typemask, does the StaticShape need a collision in order for it to function properly?

15
Suggestions & Requests / Raycasts and StaticShapes
« on: December 31, 2015, 03:52:12 PM »
I'm curious as to what's necessary for the two to interact, $TypeMasks::StaticShapeObjectType is implies that there's a working typemask, does the StaticShape need a collision in order for it to function properly?
edit
whoops i somehow posted this in the wrong board

Pages: [1] 2 3 4 5 6 ... 10