function onActionServerside(serverOption)
{
if (temp.serverOption != "dig")
{
return false;
}
temp.digPosition = player.dropPosition();
if (clientr.lastDig[0] == temp.digPosition[0] && clientr.lastDig[1] == clientr.lastDig[1])
{
return false;
}
temp.digCheck = this.checkTiles(temp.digPosition);
clientr.lastDig = temp.digPosition;
setani("v_shovel", "v_shovel-"@ temp.digCheck @".png");
switch (temp.digCheck)
{
case "grass":
this.doDrops(temp.digPosition, {{"object_hole", 0}, {"object_artifact", 290}});
break;
case "sand":
this.doDrops(temp.digPosition, {{"object_sandhole", 280}, {"generator_dungeon", 0}});
break;
}
}
function checkTiles(position)
{
temp.tilePosition = tiles[temp.position[0], temp.position[1]];
temp.allTiles = {
{"grass", {1023, 299, 1, 0, 1008, 16, 130, 197, 131, 147, 114}},
{"sand", {301, 171, 170, 2993, 2992, 3010, 2977, 15, 8, 381, 382, 288, 181, 2976}},
{"darksand", {170, 947, 949, 895, 847, 904, 339, 905}}
};
for (temp.currentTiles: temp.allTiles)
{
if (temp.tilePosition in temp.currentTiles[1])
{
temp.foundTile = temp.currentTiles[0];
break;
}
}
return temp.foundTile;
}
function doDrops(dropPosition, dropMode)
{
for (temp.currentDrop: temp.dropMode)
{
if (temp.currentDrop[1] != 0)
{
temp.doDrop = (random(0, 300) < temp.currentDrop[1]? true: false);
}
else
{
temp.doDrop = true;
}
if (temp.doDrop)
{
putnpc2(temp.dropPosition[0], temp.dropPosition[1], ("join" SPC temp.currentDrop[0] @";"));
}
}
}
public function dropPosition()
{
temp.playerPos = {{0.75, 1}, {0.6, 1.5}};
temp.dropPos = {
player.x + (player.dir in {0, 2}? temp.playerPos[0][0] : temp.playerPos[1][0]) + vecx(player.dir) * 2,
player.y + (player.dir in {0, 2}? temp.playerPos[0][1] : temp.playerPos[1][1]) + vecy(player.dir) * 2
};
return temp.dropPos;
}
//#CLIENTSIDE
function onWeaponFired()
{
triggerserver("weapon", this.name, "dig");
setani("grab",NULL);
}