HSPでRPGの戦闘っぽい何か

#runtime "hsp3cl" #cmpopt varinit 1 #module C […]

#runtime "hsp3cl" #cmpopt varinit 1 #module C […]

  • タグ:
  • タグはありません
#runtime "hsp3cl"
#cmpopt varinit 1
#module CharaBase _name,_hp,_mp,_waza
#modcfunc name
return _name
#modcfunc hp
return _hp
#modcfunc mp
return _mp
#modcfunc isDead
return _hp<=0
#modfunc addHp int __hp
_hp+=__hp:return
#modfunc addMp int __mp
_mp+=__mp:return
#modfunc allView
mes strf("◇%s >> HP:%4d MP:%4d",_name,_hp,_mp): return
#modfunc waza int id,var _chara
chara=_chara: gosub _waza.id: return stat
#global
#module Player _name,_hp,_mp,_waza
#define ctype _(%1) %1@CharaBase
#define new(%1) dimtype %1,5: newmod %1,Player
#modinit
_name=""
_hp=500
_mp=500
_waza=*attack,*magic,*final,*heal
return
*attack
if rnd(10)=0 {
dmg=80
crt="CRITICAL!! "
}
else {
dmg=40
crt=""
}
mes _(_name)+"! "+crt+name(_(chara))+""+dmg+"!"
addHp _(chara),-dmg
return 0
*magic
dmg=100
costMp=20
if _(_mp)-costMp<0: return 1
mes _(_name)+"! "+name(_(chara))+""+dmg+"!"
addHp _(chara),-dmg
addMp thismod,-costMp
return 0
*final
dmg=300
costMp=100
if _(_mp)-costMp<0: return 1
mes _(_name)+"! "+name(_(chara))+""+dmg+"!"
addHp _(chara),-dmg
addHp thismod,-50
addMp thismod,-costMp
return 0
*heal
healHp=100
costMp=20
if _(_mp)-costMp<0: return 1
mes _(_name)+"! "+name(_(chara))+""+healHp+"!"
addHp _(chara),healHp
addMp thismod,-costMp
return 0
#global
#module Enemy _name,_hp,_mp,_waza
#define ctype _(%1) %1@CharaBase
#define new(%1) dimtype %1,5: newmod %1,Enemy
#modinit
_name=""
_hp=2000
_mp=0
_waza=*attack
return
*attack
if rnd(10)=0 {
dmg=60
crt="CRITICAL!! "
}
else {
dmg=30
crt=""
}
mes _(_name)+"! "+crt+name(_(chara))+""+dmg+"!"
addHp _(chara),-dmg
return 0
#global
#module Program
#deffunc main
dim win
dim loss
randomize
repeat ,1
mes "BATTLE "+cnt+" FIGHT!\n"
wait 100
new@Player pl
new@Enemy en
allView pl
allView en
mes ""
repeat
if cnt\2=0 {
repeat
r=rnd(4)
if r!=3: waza pl,r,en: else: waza pl,3,pl
if stat=0: break
loop
}
else {
waza en,0,pl
}
if isDead(pl) {
mes "\n"+name(pl)+"…"
loss++
break
}
if isDead(en) {
mes "\n"+name(en)+"!"
win++
break
}
mes ""
allView pl
allView en
mes ""
wait 100
loop
mes "\nWIN: "+win+" LOSS: "+loss+"\n\n"
wait 500
loop
return
#global
main
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX