Update runner_functions.js

This commit is contained in:
Kaan Soral
2018-10-16 16:41:41 +03:00
committed by GitHub
parent 82cdb9975e
commit c49ba4fd22
+40 -12
View File
@@ -72,11 +72,11 @@ function is_monster(entity)
if(entity && entity.type=="monster") return true; if(entity && entity.type=="monster") return true;
} }
function is_player(entity) function is_character(entity)
{ {
if(entity && entity.type=="character" && !entity.npc) return true; if(entity && entity.type=="character" && !entity.npc) return true;
} }
function is_character(e){return is_player(e);} function is_player(e){return is_character(e);} // backwards-compatibility
function activate(num) // activates an item, likely a booster, in the num-th inventory slot function activate(num) // activates an item, likely a booster, in the num-th inventory slot
{ {
@@ -91,9 +91,10 @@ function shift(num,name) // shifts an item, likely a booster, in the num-th inve
parent.shift(num,name); parent.shift(num,name);
} }
function can_use(name) // work in progress, can be used to check cooldowns of class skills [02/02/17] function can_use(name)
{ {
return parent.can_use(name); if(G.skills[name] && G.skills[name].class && !in_arr(character.ctype,G.skills[name].class)) return false; // checks the class
return parent.can_use(name); // checks the cooldown
} }
function use(name,target) // a multi-purpose use function, works for skills too function use(name,target) // a multi-purpose use function, works for skills too
@@ -117,6 +118,11 @@ function use_skill(name,target)
parent.use_skill(name,target); parent.use_skill(name,target);
} }
function transport(map,spawn)
{
parent.socket.emit("transport",{to:map,s:spawn});
}
function item_properties(item) // example: item_properties(character.items[0]) function item_properties(item) // example: item_properties(character.items[0])
{ {
if(!item || !item.name) return null; if(!item || !item.name) return null;
@@ -246,7 +252,7 @@ function can_attack(target) // also works for priests/heal
function can_heal(t) function can_heal(t)
{ {
if(is_monster(t)) return false; if(is_monster(t)) return false; // ?? :D [11/10/18]
return can_attack(t); return can_attack(t);
} }
@@ -286,14 +292,24 @@ function buy(name,quantity) //item names can be spotted from show_json(character
parent.buy(name,quantity); parent.buy(name,quantity);
} }
function buy_with_gold(name,quantity)
{
parent.buy_with_gold(name,quantity);
}
function buy_with_shells(name,quantity)
{
parent.buy_with_shells(name,quantity);
}
function sell(num,quantity) //sell an item from character.items by it's order - 0 to N-1 function sell(num,quantity) //sell an item from character.items by it's order - 0 to N-1
{ {
parent.sell(num,quantity); parent.sell(num,quantity);
} }
function equip(num) function equip(num,slot) // slot is optional
{ {
parent.socket.emit("equip",{num:num}); parent.socket.emit("equip",{num:num,slot:slot});
} }
function unequip(slot) // show_json(character.slots) => to see slot options function unequip(slot) // show_json(character.slots) => to see slot options
@@ -301,9 +317,10 @@ function unequip(slot) // show_json(character.slots) => to see slot options
parent.socket.emit("unequip",{slot:slot}); parent.socket.emit("unequip",{slot:slot});
} }
function trade(num,trade_slot,price) // where trade_slot is 1 to 16 - example, trade(0,4,1000) puts the first item in inventory to the 4th trade slot for 1000 gold [27/10/16] function trade(num,trade_slot,price,quantity) // where trade_slot is 1 to 16 - example, trade(0,4,1000) puts the first item in inventory to the 4th trade slot for 1000 gold [27/10/16]
{ {
parent.trade("trade"+trade_slot,num,price); if(!is_string(trade_slot) || !trade_slot.startsWith("trade")) trade_slot="trade"+trade_slot;
parent.trade(trade_slot,num,price,quantity||1);
} }
function trade_buy(target,trade_slot) // target needs to be an actual player function trade_buy(target,trade_slot) // target needs to be an actual player
@@ -358,6 +375,11 @@ function move(x,y)
parent.move(x,y); parent.move(x,y);
} }
function cruise(speed)
{
parent.socket.emit("cruise",speed);
}
function show_json(e) // renders the object as json inside the game function show_json(e) // renders the object as json inside the game
{ {
parent.show_json(parent.game_stringify(e,2)); parent.show_json(parent.game_stringify(e,2));
@@ -436,9 +458,9 @@ function use_hp_or_mp()
if(used) last_potion=new Date(); if(used) last_potion=new Date();
} }
// loot(true) allows code characters to make their commanders' loot instead, extremely useful [14/01/18]
function loot(commander) function loot(commander)
{ {
// loot(true) allows code characters to make their commanders' loot instead, extremely useful [14/01/18]
var looted=0; var looted=0;
if(safeties && mssince(last_loot)<200) return; if(safeties && mssince(last_loot)<200) return;
last_loot=new Date(); last_loot=new Date();
@@ -494,6 +516,11 @@ function accept_party_request(name)
parent.socket.emit('party',{event:'raccept',name:name}); parent.socket.emit('party',{event:'raccept',name:name});
} }
function unfriend(name) // instead of a name, an owner id also works, this is currently the only way to unfriend someone [20/08/18]
{
parent.socket.emit('friend',{event:'unfriend',name:name});
}
function respawn() function respawn()
{ {
parent.socket.emit('respawn'); parent.socket.emit('respawn');
@@ -557,7 +584,7 @@ function on_destroy() // called just before the CODE is destroyed
function on_draw() // the game calls this function at the best place in each game draw frame, so if you are playing the game at 60fps, this function gets called 60 times per second function on_draw() // the game calls this function at the best place in each game draw frame, so if you are playing the game at 60fps, this function gets called 60 times per second
{ {
} }
function on_game_event(event) function on_game_event(event)
@@ -968,7 +995,8 @@ function bfs()
{ {
if(smart.prune.map && smart.flags.map) {start++; continue;} if(smart.prune.map && smart.flags.map) {start++; continue;}
map.doors.forEach(function(door){ map.doors.forEach(function(door){
if(simple_distance({x:map.spawns[door[6]][0],y:map.spawns[door[6]][1]},{x:current.x,y:current.y})<30) // if(simple_distance({x:map.spawns[door[6]][0],y:map.spawns[door[6]][1]},{x:current.x,y:current.y})<30)
if(is_door_close(current.map,door,current.x,current.y) && can_use_door(current.map,door,current.x,current.y))
qpush({map:door[4],x:G.maps[door[4]].spawns[door[5]||0][0],y:G.maps[door[4]].spawns[door[5]||0][1],transport:true,s:door[5]||0}); qpush({map:door[4],x:G.maps[door[4]].spawns[door[5]||0][0],y:G.maps[door[4]].spawns[door[5]||0][1],transport:true,s:door[5]||0});
}); });
map.npcs.forEach(function(npc){ map.npcs.forEach(function(npc){