Het komend weekend zal ik werken aan:
- de kans dat de duurzaamheid (durability) van een wapen afneemt, gaat van 100 % (=altijd) naar 5 %, maar de maximum duurzaamheid gaat wel fors omlaag.
De durability van:
- een wapen gaat alleen omlaag (kans 5%) als een aanval op de tegenstander (monster) door het karakter succes heeft;
- handschoenen, armor, helm, schild, etc. gaat alleen omlaag (kans 5%, wel onafhankelijk van elkaar) als een aanval op het karakter door het monster succes heeft;
- ringen en amuleten gaat alleen omlaag als er sprake is van regeneratie van mana en hitpoints (kans 100%).
Als dat klaar is, kom ik met de volgende MODs.
Ik denk dat dit topic verplaatst moet worden naar
phpBB Modifications -> MOD Ontwikkeling.
Misschien dat een moderator dat wil/kan beoordelen...
-----
De durability MOD (waar ik overigens een probleem mee heb):
Code: Selecteer alles
#
# OPEN
#
adr/includes/adr_global.php
#
# FIND
#
function adr_previous( $lang_key , $direct , $nav='' )
#
# ADD BEFORE
#
// Begin BetterDurSys MOD
function adr_chance_to_reduce_dur($item, $user_id)
{
$dice = rand(0, 99);
if ($dice < 5)
{
adr_use_item($item, $user_id);
}
}
// End BetterDurSys MOD
#
# OPEN
#
adr_battle.php
#
# FIND
#
adr_use_item($armor , $user_id);
#
# REMOVE
#
#
# FIND
#
adr_use_item($buckler , $user_id);
#
# REMOVE
#
#
# FIND
#
adr_use_item($gloves , $user_id);
#
# REMOVE
#
#
# FIND
#
adr_use_item($helm , $user_id);
#
# REMOVE
#
#
# FIND
#
adr_use_item($amulet , $user_id);
#
# REMOVE
#
#
# FIND
#
adr_use_item($ring , $user_id);
#
# REMOVE
#
#
# FIND
#
$power = ( $item['item_type_use'] == 6 ) ? ( $item['item_power'] * 3 ) : ( $item['item_power'] * 2 );
#
# ADD AFTER
#
// Begin Better DurSys MOD
// adr_use_item($weap , $user_id);
// Eind Better DurSys MOD
#
# FIND
#
$battle_message .= sprintf($lang['Adr_battle_attack_success'] , $damage ).'<br />' ;
#
# ADD AFTER
#
// Begin Better DurSys MOD
adr_chance_to_reduce_dur($weap, $user_id);
// Eind Better DurSys MOD
#
# FIND
#
$battle_message .= sprintf($lang['Adr_battle_opponent_attack_success'] , $damage );
#
# ADD AFTER
#
// Begin Better DurSys MOD
// Dit gedeelte werkt niet. De variabelen $armor, $buckler, $helm, $gloves worden niet vastgehouden, alleen aan het begin van het gevecht
// adr_chance_to_reduce_dur($weap, $user_id);
echo "Chance to Reduce!";
$armor = intval($HTTP_POST_VARS['item_armor']);
$buckler = intval($HTTP_POST_VARS['item_buckler']);
$helm = intval($HTTP_POST_VARS['item_helm']);
$gloves = intval($HTTP_POST_VARS['item_gloves']);
adr_chance_to_reduce_dur($armor, $user_id);
adr_chance_to_reduce_dur($buckler, $user_id);
adr_chance_to_reduce_dur($gloves, $user_id);
adr_chance_to_reduce_dur($helm, $user_id);
// Eind Better DurSys MOD
Misschien dat er iemand mij kan helpen met het bovenstaande probleem.
-----
Kans op geen geld MOD
Code: Selecteer alles
#
# OPEN
#
adr_battle.php
#
# FIND
#
$reward = rand ( $adr_general['battle_base_reward_min'] , $adr_general['battle_base_reward_max'] );
if (( $monster['monster_level'] - $challenger['character_level'] ) > 1 )
{
$reward = floor( ( ( $monster['monster_level'] - $challenger['character_level'] ) * $adr_general['battle_base_reward_modifier'] ) / 100 );
}
#
# ADD BEFORE
#
// Begin NoMoney MOD
if (rand(0, 99) < 40)
$nomoney = 1;
// End NoMoney MOD
#
# REPLACE (fragment after previous FIND) WITH
#
// Begin NoMoney MOD
// Get the money earned
if ($nomoney)
$reward = 0;
else
{
$reward = rand ( $adr_general['battle_base_reward_min'] , $adr_general['battle_base_reward_max'] );
if (( $monster['monster_level'] - $challenger['character_level'] ) > 1 )
{
$reward = floor( ( ( $monster['monster_level'] - $challenger['character_level'] ) * $adr_general['battle_base_reward_modifier'] ) / 100 );
}
}
// End NoMoney MOD
#
# FIND
#
$message = sprintf($lang['Adr_battle_won'] , $exp , $reward , $board_config['points_name'] );
#
# REPLACE WITH
#
// Begin NoMoney MOD
if ($nomoney)
$message = sprintf($lang['Adr_battle_won_exp_only'], $exp, $board_config['points_name'] );
else
$message = sprintf($lang['Adr_battle_won'] , $exp , $reward , $board_config['points_name'] );
// End NoMoney MOD
#
# OPEN
#
adr/language/lang_english/lang_adr.php
#
# FIND
#
$lang['Adr_battle_won']='Je wint het gevecht! Je verdient %s experience en %s %s';
#
# ADD AFTER
#
// Begin NoMoney MOD
$lang['Adr_battle_won_exp_only']='Je wint het gevecht! Je verdient %s experience, maar geen %s';
// End NoMoney MOD
# SAVE ALL, UPLOAD ALL
-----
Herberekening kans om te raken:
Code: Selecteer alles
#
# SQL
#
ALTER TABLE `phpbb_adr_battle_list` ADD `battle_challenger_level` INT NOT NULL AFTER `battle_challenger_id` ;
ALTER TABLE `phpbb_adr_battle_list` ADD `battle_opponent_level` INT NOT NULL AFTER `battle_opponent_id` ;
#
# FIND
#
$sql = "INSERT INTO " . ADR_BATTLE_LIST_TABLE . "
( battle_type , battle_turn , battle_result , battle_text , battle_challenger_id , battle_challenger_hp , battle_challenger_mp , battle_challenger_att , battle_challenger_def , battle_opponent_id , battle_opponent_hp , battle_opponent_mp , battle_opponent_att , battle_opponent_def )
VALUES ( 1 , $turn , 0 , '' , $user_id , $hp , $mp , $att , $def , $monster_id , $monster_base_hp , 0 , $monster_base_att , $monster_base_def )";
#
# REPLACE WITH
#
// Begin ChanceToHit MOD
$sql = "INSERT INTO " . ADR_BATTLE_LIST_TABLE . "
( battle_type , battle_turn , battle_result , battle_text , battle_challenger_id , battle_challenger_hp , battle_challenger_mp , battle_challenger_att , battle_challenger_def , battle_opponent_id , battle_opponent_hp , battle_opponent_mp , battle_opponent_att , battle_opponent_def, battle_challenger_level, battle_opponent_level )
VALUES ( 1 , $turn , 0 , '' , $user_id , $hp , $mp , $att , $def , $monster_id , $monster_base_hp , 0 , $monster_base_att , $monster_base_def, $level, $monster_level )";
// Eind ChanceToHit MOD
#
# FIND first occurrence of
if ( (( ( $diff + $dice ) > 10 ) && $dice != 0 ) || $dice == 20 )
# REPLACE WITH
// Begin ChanceToHit MOD
$char_ar = $bat['battle_challenger_att'];
$char_def = $bat['battle_challenger_def'];
$char_level = $bat['battle_challenger_level'];
$monster_ar = $bat['battle_opponent_att'];
$monster_def = $bat['battle_opponent_def'];
$monster_level = $bat['battle_opponent_level'];
$chance = adr_chance_to_hit($char_ar, $char_def, $char_level, $monster_ar, $monster_def, $monster_level);
if (rand(0, 99) < $chance)
// Eind ChanceToHit MOD
#
# FIND second occurence of
if ( (( ( $diff + $dice ) > 10 ) && $dice != 0 ) || $dice == 20 )
#
# REPLACE WITH
#
// Begin ChanceToHit MOD
$char_ar = $bat['battle_challenger_att'];
$char_def = $bat['battle_challenger_def'];
$char_level = $bat['battle_challenger_level'];
$monster_ar = $bat['battle_opponent_att'];
$monster_def = $bat['battle_opponent_def'];
$monster_level = $bat['battle_opponent_level'];
$chance = adr_chance_to_hit($monster_ar, $monster_def, $monster_level, $char_ar, $char_def, $char_level);
if (rand(0, 99) < $chance)
// Eind ChanceToHit MOD
#
# OPEN
#
adr/includes/adr_global.php
#
# FIND
#
// The following functions are used on every page of the mod , so they are always defined
#
# AFTER, ADD
#
// Begin ChanceToHit MOD
function adr_chance_to_hit($att_ar, $att_def, $att_lvl, $def_ar, $def_def, $def_lvl)
{
$res = 100 * ($att_ar / ($att_ar + $def_def)) * 2 * ($att_lvl / ($att_lvl + $def_lvl));
if ($res < 5)
$res = 5;
if ($res > 95)
$res = 95;
return $res;
}
// Eind ChanceToHit MOD
De aanvals- en verdedigingskracht van monsters moeten worden aangepast.