Thaius wrote:Ah, okay. I hadn't realized you didn't play games like that. Aw, now I'm all sad... no Final Fantasy VII or Chrono Trigger...
Ditto.Asceai wrote:Neither of those games contain only status-inducing magic. (which is what JQuartz was getting at, right?)
This is the equation I made for poison:Thaius wrote:I figure the equation would involve the caster's magic level, the victim's magic defense level, and some percentage of the victim's max HP. I just need to figure out how.
Code: Select all
damage to victim HP= (((attackerMAG-victimMAGDF)*.5)+200*.005)*(victimMAXHP*0.05)
I added a Sure Poison magic, which has 100% success rate so you can test the effect of poison status since the normal one doesn't always hit.
If you have anything that need to be modified don't hesitate to tell.
This is the code:
Code: Select all
init:
$ m = Character('Me', color="#c8c8ff")
$ battle_on=None
$ level=1
$ experience=0
$ provided_experience=5
$ level_up_experience=5
$ enemy_name='Hostile Donut'
$ enemyMAXHP=100
$ enemyHP = 100
$ playerMAXHP=100
$ playerHP = 100
$ enemyATK = 20
$ enemyDEF = 5
$ playerATK = 20
$ playerDEF = 7
$ playerMAXMP=50
$ playerMP = 50
$ enemyMP = 50
$ playerMAG = 30
$ enemyMAG = 30
$ playerMAGDEF = 5
$ enemyMAGDEF = 5
$ enemystatus=None
$ playerstatus=None
$ fire = 5
$ potion = 10
$ grenade = 3
python:
def percentChance(chance):
if renpy.random.randint(1,100) >= chance:
return True
return False
def regenerate_mp():
ui.timer(2.0, ui.callsinnewcontext("mp_regeneration"))
config.overlay_functions.append(regenerate_mp)
def hp_and_mp():
if battle_on:
ui.frame(xpos=1.0, xanchor=1.0)
ui.vbox()
ui.bar(playerMAXHP,playerHP, xmaximum=150)
ui.text("HP: "+str(playerHP)+"/" +str(playerMAXHP))
ui.null(height=10)
ui.bar (playerMAXMP, playerMP,xmaximum=150)
ui.text("MP: " + str(playerMP) +"/"+ str(playerMAXMP))
ui.close()
config.overlay_functions.append(hp_and_mp)
def enemy_hp():
if battle_on:
ui.frame(xpos=.5, xanchor=.5,ypos=.3)
ui.vbox()
ui.text(enemy_name)
ui.bar(enemyMAXHP,enemyHP, xmaximum=150)
ui.text("HP: "+str(enemyHP)+"/" +str(enemyMAXHP))
if not enemystatus:
ui.null(height=10)
elif enemystatus=='Poison':
ui.text('Poisoned',color='#f00',size=10)
ui.close()
config.overlay_functions.append(enemy_hp)
label mp_regeneration:
if playerMP>=playerMAXMP:
return
$ playerMP += 1
$ renpy.restart_interaction()
return
label start:
"I travelled the plains of Renperia and stumbled upon a Hostile Donut!"
"Let the battle begin!"
$ provided_experience=5
$ enemy_name='Hostile Donut'
$ enemyMAXHP=100
$ enemyHP = 100
$ enemyATK = 20
$ enemyDEF = 5
$ enemyMP = 50
$ enemyMAG = 30
$ enemyMAGDEF = 5
call battleSetup
"Since I vanquished the monster, I ate the Donut. Delicious..."
"Addicted to the taste of Hostile Donut, I search for another one to battle."
"Alright, found one!"
"Let the battle begin!"
call battle_hostile_donut
call battleSetup
"I ate another donut. Maybe I should start a donut shop and name the shop, Monster Donuts..."
label battle_hostile_donut:
$ provided_experience=5
$ enemy_name='Hostile Donut'
$ enemyMAXHP=100
$ enemyHP = 100
$ enemyATK = 20
$ enemyDEF = 5
$ enemyMP = 50
$ enemyMAG = 30
$ enemyMAGDEF = 5
return
label battleSetup:
$ battle_on=True
label new_round:
if enemystatus == "Poison":
call poison_effect_on_enemy
if enemyHP <=0:
"You win!"
jump endBattle
if playerstatus =="Poison":
call poison_effect_on_player
if playerHP <=0:
"You're defeated!"
jump loseBattle
label battleLoop:
python:
ui.vbox(xpos=.7, ypos=.5)
ui.textbutton('Attack', clicked=ui.jumps('attack'))
ui.textbutton('Magic', clicked=ui.jumps('magic'))
ui.textbutton('Use Item', clicked=ui.jumps('item'))
ui.close()
ui.interact()
label attack:
"You attack"
$ tempNumber = playerATK - enemyDEF
if percentChance(75):
"Critical Hit!"
$ tempNumber= playerATK-(enemyDEF/2)
$ enemyHP -= tempNumber
if enemyHP<=0:
$ enemyHP=0
"You do %(tempNumber)s damage!"
if enemyHP < 1:
"You win!"
jump endBattle
jump enemyturn
label magic:
python:
ui.vbox(xpos=.7, ypos=.5)
ui.textbutton('Fire 5MP', clicked=ui.jumps('fire'))
ui.textbutton('Thunder 5MP', clicked=ui.jumps('thunder'))
ui.textbutton('Poison 5MP', clicked=ui.jumps('poison'))
ui.textbutton('Sure Poison 5MP', clicked=ui.jumps('sure_poison'))
ui.textbutton('Return', clicked=ui.jumps('battleLoop'))
ui.close()
ui.interact()
label fire:
if playerMP <=4:
"You don't have enough MP."
jump magic
$ fireATK = playerMAG - enemyMAGDEF
$ playerMP -= 5
$ enemyHP -= fireATK
if enemyHP<=0:
$ enemyHP=0
"You attack with fire for %(fireATK)s damage!"
if enemyHP <=0:
"You win!"
jump endBattle
jump enemyturn
label thunder:
if playerMP <=4:
"You don't have enough MP."
jump magic
$ playerMP -= 5
$ thunderATK = playerMAG - enemyMAGDEF
$ enemyHP -= thunderATK
if enemyHP<=0:
$ enemyHP=0
"You attack with thunder for %(thunderATK)s damage!"
if enemyHP <=0:
"You win!"
jump endBattle
jump enemyturn
label poison:
if playerMP <=4:
"You don't have enough MP."
jump magic
$ playerMP -= 5
if percentChance(60):
$ enemystatus = "Poison"
"Success! Enemy has been poisoned."
else:
"Enemy has not been poisoned."
if enemyHP<=0:
$ enemyHP=0
if enemyHP <=0:
"You win!"
jump endBattle
jump enemyturn
label sure_poison:
if playerMP <=4:
"You don't have enough MP."
jump magic
$ playerMP -= 5
if percentChance(0):
$ enemystatus = "Poison"
"Success! Enemy has been poisoned."
else:
"Enemy has not been poisoned."
if enemyHP<=0:
$ enemyHP=0
if enemyHP <=0:
"You win!"
jump endBattle
jump enemyturn
label item:
python:
ui.vbox(xpos=.7, ypos=.5)
if potion>=1:
ui.textbutton('Potion %(potion)s' % globals(), clicked=ui.jumps('potion'))
if grenade>=1:
ui.textbutton('Grenade %(grenade)s' % globals(), clicked=ui.jumps('grenade'))
ui.textbutton('Return', clicked=ui.jumps('battleLoop'))
ui.close()
ui.interact()
label potion:
$ playerHP += 50
if playerHP>=playerMAXHP:
$ playerHP=playerMAXHP
$ potion -= 1
"You heal 50 hp!"
if enemyHP<=0:
$ enemyHP=0
if enemyHP <=0:
"You win!"
jump endBattle
jump enemyturn
label grenade:
if grenade<=0:
"You don't have any grenade."
jump item
$ grenATK = playerATK - enemyDEF + 10
$ enemyHP -= grenATK
$ grenade -= 1
if enemyHP<=0:
$ enemyHP=0
"You throw grenade for %(grenATK)s damage!"
if enemyHP <=0:
"You win!"
jump endBattle
jump enemyturn
label enemyturn:
"You take damage!"
$ tempNumber = enemyATK - playerDEF
$ playerHP -= tempNumber
"Hit for %(tempNumber)s damage!"
if playerHP < 1:
jump loseBattle
jump new_round
label endBattle:
"You rock!"
$ experience+=provided_experience
"You gained %(provided_experience)d experience points."
if experience>=level_up_experience:
$ level+=1
$ level_up_experience=level_up_experience*2
$ level_up_experience="%d" % level_up_experience
$ level_up_experience=int(level_up_experience)
"You gained a level!"
$ placeholdervariable=level_up_experience-experience
"You need another %(placeholdervariable)d experience points to reach the next level."
$ battle_on=None
$ enemystatus=None
return
label loseBattle:
"You're defeated!"
return
label poison_effect_on_enemy:
$ placeholder_variable=playerMAG-enemyMAGDEF
if placeholder_variable<=-50:
$ placeholder_variable=-50
elif placeholder_variable>=50:
$ placeholder_variable=50
if placeholder_variable<=0:
$ placeholder_variable=placeholder_variable*0.5
$ placeholder_variable=(placeholder_variable*4)+200
$ placeholder_variable=placeholder_variable*0.005
$ placeholder_variable2=enemyMAXHP*0.05
$ placeholder_variable=placeholder_variable*placeholder_variable2
$ placeholder_variable="%d" % placeholder_variable
$ placeholder_variable=int(placeholder_variable)
if placeholder_variable<=0:
$ placeholder_variable=1
$ enemyHP-=placeholder_variable
if enemyHP<=0:
$ enemyHP=0
"%(enemy_name)s loses %(placeholder_variable)d HP due to poison!"
return
label poison_effect_on_player:
$ placeholder_variable=enemyMAG-playerMAGDEF
if placeholder_variable<=-50:
$ placeholder_variable=-50
elif placeholder_variable>=50:
$ placeholder_variable=50
if placeholder_variable<=0:
$ placeholder_variable=placeholder_variable*0.5
$ placeholder_variable=(placeholder_variable*4)+200
$ placeholder_variable=placeholder_variable*0.005
$ placeholder_variable2=playerMAXHP*0.05
$ placeholder_variable=placeholder_variable*placeholder_variable2
$ placeholder_variable="%d" % placeholder_variable
$ placeholder_variable=int(placeholder_variable)
if placeholder_variable<=0:
$ placeholder_variable=1
$ playerHP-=placeholder_variable
if playerHP<=0:
$ playerHP=0
"You lose %(placeholder_variable)d HP due to poison!"
return