mob/var ATTACK=1
mob/proc Rbattle(mob/Enemy,mob/Enemy2,mob/Enemy3, mob/Allied1) var/turf/Map for (var/turf/BattleGrounds/BatLoc in world) var/Taken=0 for (var/atom/A in BatLoc) if(A.density==1){Taken=1} if(!Taken){Map=BatLoc} if (!Map){return} var/k=rand(1,3) if(k==1) src<<sound('Battle1.mid',1) if(k==2) src<<sound('Battle2.mid',1) if(k==3) src<<sound('Battle3.mid',1) src.icon_state="battle" src.overlays=null src.inbattle=1 src.battle=1 src.south=0 src.oldlocx = src.x src.oldlocy = src.y src.oldlocz = src.z src.ATTACK=1 src.Move(Map) src.dir=WEST src<<"You are under attack!" src.client.lazy_eye = 5 textonscreenbackground(1,1,11,3) textonscreenTEXT(1.5,12,3,1.3," Phys") textonscreenTEXT(1.5,12,2,1.3," Run") new/obj/menu/Curser(usr.client) if(Enemy!=null)Enemy.Move(locate(src.x-4,src.y,src.z)) if(Enemy2!=null)Enemy2.Move(locate(src.x-4,src.y + 1,src.z)) if(Enemy3!=null)Enemy3.Move(locate(src.x-4,src.y-1,src.z)) if(Allied1!=null)Allied1.Move(locate(src.x,src.y+1,src.z)) var/list/WhichTurn=new() var/list/ppl=new() for(var/mob/Aa in view())ppl+=Aa var/nextturn,PlayerOrder do for (var/aa=0;aa<=length(ppl);aa++) PlayerOrder=0 for(var/mob/ppp in ppl) if (ppp.Agility>PlayerOrder){nextturn=ppp;PlayerOrder=ppp.Agility} else if (ppp.Agility==PlayerOrder)nextturn=ppp WhichTurn+=nextturn ppl-=nextturn while (length(ppl)>0) do for(var/mob/pp in WhichTurn) if (pp.Health>0) if (pp.client) if(src.inbattle==1){pp<<"It is now your turn!";pp.Turn = 1} else return while(pp.Turn)sleep(5) else if(istype(pp,/mob/monsters)) pp.MonsterAttack() if(istype(pp,/mob/Allied)) pp.Allied() while(1) Phys() if(src.ATTACK==1) src.ATTACK=0 var/list/MonsterList=new() for (var/mob/monsters/M in view()) if(M!=null) if (M.Health > 0){MonsterList += M} MonsterList += "Cancel" var/mob/enemy = input("Attack who?") in MonsterList if (enemy == "Cancel") src.ATTACK=1 return var/hitpercent=50+src.Dexterity var/hitpercent2=hitpercent-enemy.Agility if(hitpercent2>100) hitpercent2=100 if(hitpercent2<0) hitpercent=0 var/hitpercent3=rand(1,100) var/damagefirst=rand(src.Strength) var/damagecount=damagefirst-enemy.Defense sleep(2) src.ATTACK=1 flick("sparfury",src) if(hitpercent3 <= hitpercent2) if(damagecount > 0) enemy.Health -= damagecount src.attack=1 view()<<"<font size = 1>[src] Attacks [enemy] for [damagecount]" if (enemy != null) if (enemy.Health < 1) if (istype(enemy,/mob/monsters)){enemy.icon = null} src.Victory() src.Turn = 0 else{view() << "<font size = 1>[usr]'s attack bounced off [enemy].";usr.Turn = 0} else{view() << "<font size = 1>[usr] attacks [enemy], but misses.";usr.Turn = 0} MonsterAttack() var/ok=rand(1,2) if(ok==1) for (var/mob/Player in view()) if (Player.client && Player.Health > 0) for (var/mob/M in view()) if (M.Bnum == Bnum && M.client) var/hitpercent=50+src.Dexterity var/hitpercent2=hitpercent - M.Agility if(hitpercent2>100) hitpercent2 = 100 if(hitpercent2<0) hitpercent = 0 var/hitpercent3=rand(1,100) var/damagefirst=rand(src.Strength) var/damagecount=damagefirst-M.Defense sleep(2) if(hitpercent3 <= hitpercent2) if(damagecount > 0){M.Health -= damagecount;view()<<"<font size = 1>[src] Attacks [M] for [damagecount]";M.DeathCheck()} else{view() << "<font size = 1>[src]'s attack bounced off [M]."} else{view() << "<font size = 1>[src] attacks [M], but misses."} if(ok==2) for (var/mob/Allied/M in view()) if (M.Health > 0) if (M.Bnum == Bnum) var/hitpercent=50+src.Dexterity var/hitpercent2=hitpercent - M.Agility if(hitpercent2>100) hitpercent2 = 100 if(hitpercent2<0) hitpercent = 0 var/hitpercent3=rand(1,100) var/damagefirst=rand(src.Strength) var/damagecount=damagefirst-M.Defense sleep(2) if(hitpercent3 <= hitpercent2) if(damagecount > 0){M.Health -= damagecount;view()<<"<font size = 1>[src] Attacks [M] for [damagecount]";M.DeathCheck()} else{view() << "<font size = 1>[src]'s attack bounced off [M]."} else{view() << "<font size = 1>[src] attacks [M], but misses."} else for (var/mob/person/P in view()) if (P.client && P.Health > 0) var/hitpercent=50+src.Dexterity var/hitpercent2=hitpercent - P.Agility if(hitpercent2>100) hitpercent2 = 100 if(hitpercent2<0) hitpercent = 0 var/hitpercent3=rand(1,100) var/damagefirst=rand(src.Strength) var/damagecount=damagefirst-M.Defense sleep(2) if(hitpercent3 <= hitpercent2) if(damagecount > 0){P.Health -= damagecount;view()<<"<font size = 1>[src] Attacks [P] for [damagecount]";P.DeathCheck()} else{view() << "<font size = 1>[src]'s attack bounced off [P]."} else{view() << "<font size = 1>[src] attacks [M], but misses."} Allied() for (var/mob/monsters/P in view()) if (P.Health > 0) if (P.Bnum == Bnum) var/hitpercent=50+src.Dexterity var/hitpercent2=hitpercent - P.Agility if(hitpercent2>100) hitpercent2 = 100 if(hitpercent2<0) hitpercent = 0 var/hitpercent3=rand(1,100) var/damagefirst=rand(src.Strength) var/damagecount=damagefirst-P.Defense sleep(2) for (var/mob/person/A in view()) A.ATTACK=1 A.Turn=1 if(hitpercent3 <= hitpercent2) if(damagecount > 0){P.Health -= damagecount;view()<<"<font size = 1>[src] Attacks [P] for [damagecount]";P.DeathCheck()} else{view() << "<font size = 1>[src]'s attack bounced off [P]."} else{view() << "<font size = 1>[src] attacks [P], but misses."} Run() if(src.ATTACK==1) switch(rand(1,3)) if(3) src<<'Doubt.mid' sleep(19) src<<"<font size = 1>You tryed to run, And Succeeded!" src.inbattle=0 src.client.lazy_eye = 0 src.Bnum = 0 src.ATTACK=1 src.icon_state="walk" src.battle=0 src.close_menu() src.loc = locate(src.oldlocx,src.oldlocy,src.oldlocz) for(var/mob/M in oview(5)) if(src==M) return else del M src.Turn=0 src.icon_state="walk" else sleep(19) src<<"<font size = 1>You tryed to run, but failed.";src.Turn=0 src.ATTACK=1 DeathCheck() if(istype(src,/mob/person)) if(src.Health<=0) for(var/mob/M in oview(5)) if(src==M) return else del M src<<'Doubt.mid' src.icon_state = null src.client.lazy_eye = 0 src.loc = locate(4,5,1) src.Bnum = 0 src.ATTACK=1 src.Turn = 0 src.battle=0 src.inbattle=0 src.close_menu() src<<"you died" src.icon_state="walk" Victory() var/mm=0 for(var/mob/monsters/M in oview(5)) if(M!=null) if (M.Health > 0) mm++ if(mm==0) var/Gained_Exp var/Gained_Zen for(var/mob/monsters/M in oview(5)) Gained_Exp+=M.exp Gained_Zen+=M.zenni del M var/k=rand(1,3) if(k==1) src<<sound('BattleEnd1.mid') sleep(24) if(k==2) src<<sound('BattleEnd2.mid') sleep(30) if(k==3) src<<sound('BattleEnd3.mid') sleep(34) src<<"Victory is at hand" src<<"You Gained [Gained_Exp] Experience!, And [Gained_Zen] Zenni!" src.close_menu() src.ATTACK=1 src.zenni+=Gained_Zen src.exp+=Gained_Exp src.Leveling_up() src.battle=0 src.icon_state="walk" src.inbattle=0 src.client.lazy_eye = 0 src.Bnum = 0 src.icon_state="walk" src.loc = locate(src.oldlocx,src.oldlocy,src.oldlocz) Leveling_up() if(src.exp>=src.maxexp) src<<"<B>You gained a level!" src.Level++ src.exp=0 src.maxexp+=src.maxexp/5 src.Strength++ src<<"Strength + 1" src.Defense++ src<<"Defense + 1" var/HP=rand(15,20) src.MaxHealth+=HP src<<"Health + <b>[HP]</b>" close_menu() for(var/obj/text/O in client.screen)del O for(var/obj/back/O in client.screen)del O for(var/obj/menu/O in client.screen)del O textonscreenbackground(var/Xcoord1, var/Ycoord1, var/Xcoord2, var/Ycoord2) for(var/Xcoord=Xcoord1,Xcoord<=Xcoord2,Xcoord++) for(var/Ycoord=Ycoord1,Ycoord<=Ycoord2,Ycoord++) var/obj/back/background=new(client) if(Xcoord==Xcoord1)background.icon_state="l" if(Xcoord==Xcoord2)background.icon_state="r" if(Ycoord==Ycoord1)background.icon_state="b" if(Ycoord==Ycoord2)background.icon_state="t" if(Xcoord==Xcoord1&&Ycoord==Ycoord1)background.icon_state="ll" if(Xcoord==Xcoord2&&Ycoord==Ycoord2)background.icon_state="ur" if(Xcoord==Xcoord1&&Ycoord==Ycoord2)background.icon_state="ul" if(Xcoord==Xcoord2&&Ycoord==Ycoord1)background.icon_state="lr" background.screen_loc="[Xcoord],[Ycoord]" textonscreenTEXT(var/Xcoord1, var/Xcoord2, var/Ycoord1, var/Ycoord2,var/T) var Xcoord=Xcoord1,Ycoord=Ycoord1 Textonscreenproc(T) for(var/Y in textonscreenlist) var/obj/text/characters=new(client) if(Xcoord==round(Xcoord)&&Ycoord==round(Ycoord)) characters.screen_loc="[Xcoord],[Ycoord]" else if(Xcoord!=round(Xcoord)&&Ycoord==round(Ycoord)) characters.screen_loc="[Xcoord-0.5]:16,[Ycoord]" else if(Xcoord==round(Xcoord)&&Ycoord!=round(Ycoord)) characters.screen_loc="[Xcoord],[Ycoord-0.5]:+16" else if(Xcoord!=round(Xcoord)&&Ycoord!=round(Ycoord)) characters.screen_loc="[Xcoord-0.5]:16,[Ycoord-0.5]:+16" characters.icon_state="[Y]" Xcoord+=0.5 if(Xcoord==Xcoord2) Xcoord=Xcoord1;Ycoord-=0.5 if(Ycoord==Ycoord2-0.5) break Textonscreenproc(var/textonscreen) textonscreenlist=list() for(var/a=1,a<=length(textonscreen),a++) textonscreenlist+=copytext(textonscreen,a,a+1)
|
2. Don't post masses of code on the forums. Work out which bits are relevant to the problem (in this case, attacking), and just post those bits. Occasionally people will wade through your entire post to find the probem(s), but more often they won't.