"Cedrik's Potion Shop", "version"=>"2.6", "author"=>"Eric Stevens
Modifications by: Chris Vorndran", "category"=>"Inn", "download"=>"core_module", "settings"=>array( "Cedrik's Potion Shop - Potion Availability,title", "ischarm"=>"Is Charm potion available,bool|1", "ismax"=>"Is Vitality potion available,bool|1", "istemp"=>"Is Health potion available,bool|1", "isforget"=>"Is Forgetfulness potion available,bool|1", "istrans"=>"Is Transmutation potion available,bool|1", "Cedrik's Potion Shop - Costs,title", "charmcost"=>"Cost for Charm Potion,range,1,10,1|2", "maxcost"=>"Cost for Vitality Potion,range,1,10,1|2", "tempcost"=>"Cost for Health Potion,range,1,10,1|2", "forgcost"=>"Cost for Forgetfulness Potion,range,1,10,1|2", "transcost"=>"Cost for Transmutation Potion,range,1,10,1|2", "random"=>"Is the cost per point of potion random,bool|0", "minrand"=>"Minimum cost per point of effect,range,1,9,1|2", "maxrand"=>"Maximum cost per point of effect,range,2,10,1|5", "randcost"=>"Current random cost,rang,1,10,1|2", "Note: Each amount of gems spent will give the effect the potion. The actual effects can vary based on configuration.,note", "Cedrik's Potion Shop - Effects,title", "transmuteturns"=>"How many turns will the transmutation sickness last?,range,1,20,1|10", "defmod"=>"How much is the multiplier for Transmutation Sickness (defense)?,floatrange,.1,2,.05|.75", "atkmod"=>"How much is the multiplier for Transmutation Sickness (attack)?,floatrange,.1,2,.05|.75", "survive"=>"Will transmutation sickness carry over new days?,bool|1", "charmgain"=>"How much charm do you get per potion,int|1", "vitalgain"=>"How many maxhp do you get per potion,int|1", "tempgain"=>"How many current hp do you get per potion,int|20", "carrydk"=>"Do MaxHitpoint (vitality) potions carry across DKs?,bool|1", ), "prefs"=>array( "Cedrik's Potion Shop User Preferences,title", "extrahps"=>"How many extra hitpoints has the user bought?,int", ), ); return $info; } function cedrikspotions_install(){ module_addhook("header-inn"); module_addhook("newday-runonce"); module_addhook("hprecalc"); return true; } function cedrikspotions_uninstall(){ return true; } function cedrikspotions_dohook($hookname,$args){ switch($hookname){ case "header-inn": $op = httpget("op"); $act = httpget("act"); if($op=="bartender" && $act == "") { addnav_notl(sanitize(getsetting("barkeep","`tCedrik"))); addnav("Gems","runmodule.php?module=cedrikspotions&op=gems"); } break; case "newday-runonce": if (get_module_setting("random")){ $min = get_module_setting("minrand"); $max = get_module_setting("maxrand"); $randcost = e_rand($min,$max); set_module_setting("randcost",$randcost); } break; case "hprecalc": $args['total'] -= get_module_pref("extrahps"); if (!get_module_setting("carrydk")) { $args['extra'] -= get_module_pref("extrahps"); set_module_pref("extrahps", 0); } } return $args; } function cedrikspotions_run(){ global $session; $wish = httppost('wish'); $op = httpget("op"); $iname = getsetting("innname", LOCATION_INN); tlschema("inn"); page_header($iname); rawoutput(""); output_notl("`c`b"); output($iname); output_notl("`b`c"); tlschema(); $barkeep = getsetting("barkeep","`tCedrik"); $mincost = 0; $maxcost = 0; $cost = 0; $gemcount = httppost('gemcount'); if ($gemcount == "") { if(get_module_setting("random")) { $cost =get_module_setting("randcost"); } else { if (get_module_setting("ischarm")) { $cm = get_module_setting("charmcost"); if ($mincost==0 || $cm < $mincost) $mincost = $cm; if ($maxcost==0 || $cm > $maxcost) $maxcost = $cm; } if (get_module_setting("ismax")) { $cm = get_module_setting("maxcost"); if ($mincost==0 || $cm < $mincost) $mincost = $cm; if ($maxcost==0 || $cm > $maxcost) $maxcost = $cm; } if (get_module_setting("istemp")) { $cm = get_module_setting("tempcost"); if ($mincost==0 || $cm < $mincost) $mincost = $cm; if ($maxcost==0 || $cm > $maxcost) $maxcost = $cm; } if (get_module_setting("isforget")) { $cm = get_module_setting("forgcost"); if ($mincost==0 || $cm < $mincost) $mincost = $cm; if ($maxcost==0 || $cm > $maxcost) $maxcost = $cm; } if (get_module_setting("istrans")) { $cm = get_module_setting("transcost"); if ($mincost==0 || $cm < $mincost) $mincost = $cm; if ($maxcost==0 || $cm > $maxcost) $maxcost = $cm; } if ($mincost == $maxcost) $cost = $mincost; } } if (!get_module_setting("random")){ switch ($wish){ case 1: $cost = get_module_setting("charmcost"); break; case 2: $cost = get_module_setting("maxcost"); break; case 3: $cost = get_module_setting("tempcost"); break; case 4: $cost = get_module_setting("forgcost"); break; case 5: $cost = get_module_setting("transcost"); break; } }else{ $cost = get_module_setting("randcost"); } if($op=="gems"){ if ($gemcount==""){ if (get_module_setting("random") || $mincost == $maxcost) { output("\"`%You have gems, do ya?`0\" %s`0 asks. \"`%Well, I'll make you a magic elixir for `^ %s %s`%!`0\"",$barkeep,$cost, translate_inline($cost == 1?"gem" : "gems")); } else { output("\"`%You have gems, do ya?`0\" %s`0 asks. \"`%Well, I'll make you a magic elixir for between `^%s and %s gems`%, depending on which one you want!`0\"",$barkeep,$mincost, $maxcost); } output("`n`nGive him how many gems?"); $give = translate_inline("Give"); $link = appendcount("runmodule.php?module=cedrikspotions&op=gems"); addnav("", $link); rawoutput("
"); rawoutput(""); rawoutput(""); output("`nAnd what do you wish for?`n"); if (get_module_setting("ischarm") == 1) { rawoutput(""); output("Charm"); if ($mincost != $maxcost) { $cm = get_module_setting("charmcost"); output("(%s %s for %s charm)", $cm, translate_inline($cm==1?"gem":"gems"), get_module_setting("charmgain")); } output_notl("`n"); } if (get_module_setting("ismax") == 1) { rawoutput(""); output("Vitality"); if ($mincost != $maxcost) { $cm = get_module_setting("maxcost"); $hm = get_module_setting("vitalgain"); $hptype = "permanent"; if (!get_module_setting("carrydk") || (is_module_active("globalhp") && !get_module_setting("carrydk", "globalhp"))) $hptype = "temporary"; $hptype = translate_inline($hptype); output("(%s %s for %s %s max %s)", $cm, translate_inline($cm==1?"gem":"gems"), $hm, $hptype, translate_inline($hm==1?"hitpoint":"hitpoints")); } output_notl("`n"); } if (get_module_setting("istemp") == 1) { rawoutput(""); output("Health"); if ($mincost != $maxcost) { $cm = get_module_setting("tempcost"); $hm = get_module_setting("tempgain"); output("(%s %s for %s %s)", $cm, translate_inline($cm==1?"gem":"gems"), $hm, translate_inline($hm == 1? "hitpoint":"hitpoints")); } output_notl("`n"); } if (get_module_setting("isforget") == 1) { rawoutput(""); output("Forgetfulness"); if ($mincost != $maxcost) { $cm = get_module_setting("forgcost"); output_notl("(%s %s)", $cm, translate_inline($cm==1?"gem":"gems")); } output_notl("`n"); } if (get_module_setting("istrans") == 1) { rawoutput(""); output("Transmutation"); if ($mincost != $maxcost) { $cm = get_module_setting("transcost"); output_notl("(%s %s)", $cm, translate_inline($cm==1?"gem":"gems")); } output_notl("`n"); } rawoutput("
"); }else{ $gemcount = abs((int)$gemcount); if ($gemcount>$session['user']['gems']){ output("%s`0 stares at you blankly.",$barkeep); output("\"`%You don't have that many gems, `bgo get some more gems!`b`0\" he says."); }else{ output("`#You place %s %s on the counter.", $gemcount, translate_inline($gemcount==1?"gem":"gems")); if (($wish == 4 || $wish == 5) && $gemcount > $cost) { output("%s`0, feeling sorry for you, prevents you from paying for multiple doses of a potion that only needs a single dose.",$barkeep); $gemcount = $cost; } $strength = ($gemcount/$cost); if(!is_integer($strength)){ output("%s`0, knowing about your fundamental misunderstanding of math, hands some of them back to you.",$barkeep); $strength = floor($strength); $gemcount=($strength * $cost); } if ($gemcount>0) { output("You drink the potion %s`0 hands you in exchange for your %s, and.....`n`n",$barkeep, translate_inline($gemcount==1?"gem":"gems")); $session['user']['gems']-=$gemcount; switch($wish){ case 1: $session['user']['charm'] += ($strength * get_module_setting("charmgain")); output("`&You feel charming!"); output("`^(You gain %s charm %s.)", $strength*get_module_setting("charmgain"), translate_inline($strength * get_module_setting("charmgain")==1 ? "point" : "points")); $potiontype = "charm"; break; case 2: $session['user']['maxhitpoints'] += ($strength*get_module_setting("vitalgain")); $session['user']['hitpoints'] += ($strength*get_module_setting("vitalgain")); output("`&You feel vigorous!"); $hptype = "permanently"; if (!get_module_setting("carrydk") || (is_module_active("globalhp") && !get_module_setting("carrydk", "globalhp"))) $hptype = "temporarily"; $hptype = translate_inline($hptype); output("`^(You %s gain %s max %s.)", $hptype, $strength * get_module_setting("vitalgain"), translate_inline($strength * get_module_setting("vitalgain") == 1 ? "hitpoint" : "hitpoints")); $potiontype = "vitality"; set_module_pref("extrahps", get_module_pref("extrahps") + ($strength * get_module_setting("vitalgain"))); break; case 3: if ($session['user']['hitpoints'] < $session['user']['maxhitpoints']) $session['user']['hitpoints'] = $session['user']['maxhitpoints']; $session['user']['hitpoints'] += ($strength * get_module_setting("tempgain")); output("`&You feel healthy!"); output("`^(You gain %s temporary %s.)", $strength * get_module_setting("tempgain"), translate_inline($strength * get_module_setting("tempgain") == 1 ? "hitpoint" : "hitpoints")); $potiontype = "health"; break; case 4: $session['user']['specialty']=""; output("`&You feel completely directionless in life."); output("You should rest and make some important decisions about your life!"); output("`^(Your specialty has been reset.)"); $potiontype = "forgetfulness"; break; case 5: $session['user']['race']=RACE_UNKNOWN; output("`@You double over retching from the effects of transformation potion as your bones turn to gelatin!`n"); output("`^(Your race has been reset and you will be able to chose a new one tomorrow.)"); strip_buff('racialbenefit'); $potiontype = "transmutation"; if (isset($session['bufflist']['transmute'])) { $session['bufflist']['transmute']['rounds'] += get_module_setting("transmuteturns"); } else { apply_buff('transmute', array("name"=>"`6Transmutation Sickness", "rounds"=>get_module_setting("transmuteturns"), "wearoff"=>"You stop puking your guts up. Literally.", "atkmod"=>get_module_setting("atkmod"), "defmod"=>get_module_setting("defmod"), "roundmsg"=>"Bits of skin and bone reshape themselves like wax.", "survivenewday"=>get_module_setting("survive"), "newdaymessage"=>"`6Due to the effects of the Transmutation Potion, you still feel `2ill`6.", "schema"=>"module-cedrikspotions" ) ); } break; } debuglog("used $gemcount gems on $potiontype potions"); }else{ output("`n`nYou feel as though your gems would be better used elsewhere, not on some smelly potion."); } } } addnav("I?Return to the Inn","inn.php"); villagenav(); } rawoutput("
"); page_footer(); } ?>