forked from GithubBackups/vichan
dice.php: extract email dice function from functions.php
This commit is contained in:
parent
27e4bd833a
commit
b8c53fbbcd
@ -241,7 +241,7 @@ function loadConfig() {
|
|||||||
$config['version'] = $__version;
|
$config['version'] = $__version;
|
||||||
|
|
||||||
if ($config['allow_roll']) {
|
if ($config['allow_roll']) {
|
||||||
event_handler('post', 'diceRoller');
|
event_handler('post', 'email_dice_roll');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_array('webm', $config['allowed_ext_files']) || in_array('mp4', $config['allowed_ext_files'])) {
|
if (in_array('webm', $config['allowed_ext_files']) || in_array('mp4', $config['allowed_ext_files'])) {
|
||||||
@ -2600,65 +2600,6 @@ function shell_exec_error($command, $suppress_stdout = false) {
|
|||||||
return $return === 'TB_SUCCESS' ? false : $return;
|
return $return === 'TB_SUCCESS' ? false : $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Die rolling:
|
|
||||||
* If "dice XdY+/-Z" is in the email field (where X or +/-Z may be
|
|
||||||
* missing), X Y-sided dice are rolled and summed, with the modifier Z
|
|
||||||
* added on. The result is displayed at the top of the post.
|
|
||||||
*/
|
|
||||||
function diceRoller($post) {
|
|
||||||
global $config;
|
|
||||||
if(strpos(strtolower($post->email), 'dice%20') === 0) {
|
|
||||||
$dicestr = str_split(substr($post->email, strlen('dice%20')));
|
|
||||||
|
|
||||||
// Get params
|
|
||||||
$diceX = '';
|
|
||||||
$diceY = '';
|
|
||||||
$diceZ = '';
|
|
||||||
|
|
||||||
$curd = 'diceX';
|
|
||||||
for($i = 0; $i < count($dicestr); $i ++) {
|
|
||||||
if(is_numeric($dicestr[$i])) {
|
|
||||||
$$curd .= $dicestr[$i];
|
|
||||||
} else if($dicestr[$i] == 'd') {
|
|
||||||
$curd = 'diceY';
|
|
||||||
} else if($dicestr[$i] == '-' || $dicestr[$i] == '+') {
|
|
||||||
$curd = 'diceZ';
|
|
||||||
$$curd = $dicestr[$i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Default values for X and Z
|
|
||||||
if($diceX == '') {
|
|
||||||
$diceX = '1';
|
|
||||||
}
|
|
||||||
|
|
||||||
if($diceZ == '') {
|
|
||||||
$diceZ = '+0';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Intify them
|
|
||||||
$diceX = intval($diceX);
|
|
||||||
$diceY = intval($diceY);
|
|
||||||
$diceZ = intval($diceZ);
|
|
||||||
|
|
||||||
// Continue only if we have valid values
|
|
||||||
if($diceX > 0 && $diceY > 0) {
|
|
||||||
$dicerolls = array();
|
|
||||||
$dicesum = $diceZ;
|
|
||||||
for($i = 0; $i < $diceX; $i++) {
|
|
||||||
$roll = rand(1, $diceY);
|
|
||||||
$dicerolls[] = $roll;
|
|
||||||
$dicesum += $roll;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Prepend the result to the post body
|
|
||||||
$modifier = ($diceZ != 0) ? ((($diceZ < 0) ? ' - ' : ' + ') . abs($diceZ)) : '';
|
|
||||||
$dicesum = ($diceX > 1) ? ' = ' . $dicesum : '';
|
|
||||||
$post->body = '<table class="diceroll"><tr><td><img src="'.$config['dir']['static'].'d10.svg" alt="Dice roll" width="24"></td><td>Rolled ' . implode(', ', $dicerolls) . $modifier . $dicesum . '</td></tr></table><br/>' . $post->body;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function slugify($post) {
|
function slugify($post) {
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
|
61
inc/functions/dice.php
Normal file
61
inc/functions/dice.php
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
<?php
|
||||||
|
namespace Vichan\Functions\Dice;
|
||||||
|
|
||||||
|
/* Die rolling:
|
||||||
|
* If "dice XdY+/-Z" is in the email field (where X or +/-Z may be
|
||||||
|
* missing), X Y-sided dice are rolled and summed, with the modifier Z
|
||||||
|
* added on. The result is displayed at the top of the post.
|
||||||
|
*/
|
||||||
|
function email_dice_roll($post) {
|
||||||
|
global $config;
|
||||||
|
if(strpos(strtolower($post->email), 'dice%20') === 0) {
|
||||||
|
$dicestr = str_split(substr($post->email, strlen('dice%20')));
|
||||||
|
|
||||||
|
// Get params
|
||||||
|
$diceX = '';
|
||||||
|
$diceY = '';
|
||||||
|
$diceZ = '';
|
||||||
|
|
||||||
|
$curd = 'diceX';
|
||||||
|
for($i = 0; $i < count($dicestr); $i ++) {
|
||||||
|
if(is_numeric($dicestr[$i])) {
|
||||||
|
$$curd .= $dicestr[$i];
|
||||||
|
} else if($dicestr[$i] == 'd') {
|
||||||
|
$curd = 'diceY';
|
||||||
|
} else if($dicestr[$i] == '-' || $dicestr[$i] == '+') {
|
||||||
|
$curd = 'diceZ';
|
||||||
|
$$curd = $dicestr[$i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default values for X and Z
|
||||||
|
if($diceX == '') {
|
||||||
|
$diceX = '1';
|
||||||
|
}
|
||||||
|
|
||||||
|
if($diceZ == '') {
|
||||||
|
$diceZ = '+0';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Intify them
|
||||||
|
$diceX = intval($diceX);
|
||||||
|
$diceY = intval($diceY);
|
||||||
|
$diceZ = intval($diceZ);
|
||||||
|
|
||||||
|
// Continue only if we have valid values
|
||||||
|
if($diceX > 0 && $diceY > 0) {
|
||||||
|
$dicerolls = array();
|
||||||
|
$dicesum = $diceZ;
|
||||||
|
for($i = 0; $i < $diceX; $i++) {
|
||||||
|
$roll = rand(1, $diceY);
|
||||||
|
$dicerolls[] = $roll;
|
||||||
|
$dicesum += $roll;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prepend the result to the post body
|
||||||
|
$modifier = ($diceZ != 0) ? ((($diceZ < 0) ? ' - ' : ' + ') . abs($diceZ)) : '';
|
||||||
|
$dicesum = ($diceX > 1) ? ' = ' . $dicesum : '';
|
||||||
|
$post->body = '<table class="diceroll"><tr><td><img src="'.$config['dir']['static'].'d10.svg" alt="Dice roll" width="24"></td><td>Rolled ' . implode(', ', $dicerolls) . $modifier . $dicesum . '</td></tr></table><br/>' . $post->body;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user