; PureBasic Visual Designer v3.95 build 1485 (PB4Code) ;- Window Constants ; Enumeration #Wep_Window=4 EndEnumeration ;- Gadget Constants ; Enumeration #Wep_Image=#Build_SDSel+1 #Wep_Panel #Wep_Center #Wep_Top #Wep_TopRight #Wep_Left #Wep_Right #Wep_BotLeft #Wep_Bot #Wep_BotRight #Wep_TopLeft #Wep_Att #Wep_Start #Wep_Fin #Wep_Step #Wep_Frame #Wep_Play #Wep_LoadImage #Wep_EditImage #Wep_Help #Wep_Line #Wep_LineColor #Wep_SetBackColor #Wep_BackColor #Wep_AniTime #WText_0 #WFrame3D_0 #WText_2 #Wep_Name #WText_3 #Wep_Ammo #WText_4 #Wep_MinRange #WText_5 #Wep_MaxRange #WText_6 #Wep_Area #WText_8 #Wep_Dam #WText_9 #Wep_Aim #Wep_Piercing #WText_10 #Wep_MoveSpeed #Wep_Homing #WText_12 #Wep_ReloadTime #WText_13 #Wep_Duration #WText_14 #Wep_Repeat #Wep_Temp #Wep_Team #Wep_Change #Wep_BType #Wep_Teleport #Wep_Home #Wep_Prison #Wep_Random #Wep_Neutral #Wep_Stun #Wep_Scare #Wep_Brave #Wep_EVisible #Wep_VYes #Wep_VNo #WText_15 #Wep_Armor #WText_16 #Wep_Health #WText_17 #Wep_Speed #Wep_LChange #Wep_Height #Wep_Clear #Wep_Prev #Wep_Next #Wep_New #Wep_Del #Wep_Import #Wep_Export #Wep_Cancel #Wep_OK #Wep_DelMove #Wep_DAir #Wep_DLand #Wep_DSea #Wep_AddMove #Wep_AAir #Wep_ALand #Wep_ASea #Wep_FFire #Wep_TSelf #WText_19 #Wep_PSound #Wep_LSound EndEnumeration ;- Image Plugins ;- Image Globals Global Wep_Image0 Global Wep_Image1 Global Wep_Image2 Global Wep_Image3 Global Wep_Image4 Global Wep_Image5 Global Wep_Image6 Global Wep_Image7 Global Wep_Image8 Global Wep_Image9 Global Wep_Image10 Global Wep_Image11 ;and the down/images????? ;- Catch Images Wep_Image0 = CreateImage(#PB_Any,320,320) Wep_Image1 = CatchImage(#PB_Any, ?Wep_Image1) Wep_Image2 = CatchImage(#PB_Any, ?Wep_Image2) Wep_Image3 = CatchImage(#PB_Any, ?Wep_Image3) Wep_Image4 = CatchImage(#PB_Any, ?Wep_Image4) Wep_Image5 = CatchImage(#PB_Any, ?Wep_Image5) Wep_Image6 = CatchImage(#PB_Any, ?Wep_Image6) Wep_Image7 = CatchImage(#PB_Any, ?Wep_Image7) Wep_Image8 = CatchImage(#PB_Any, ?Wep_Image8) Wep_Image9 = CatchImage(#PB_Any, ?Wep_Image9) Wep_Image10 = CreateImage(#PB_Any,20,20) Wep_Image11 = CreateImage(#PB_Any,20,20) ;- Images DataSection Wep_Image1: IncludeBinary "C:\Program Files\PB41beta\Projects\RTSMaker\None.ico" Wep_Image2: IncludeBinary "C:\Program Files\PB41beta\Projects\RTSMaker\ARW11N.ICO" Wep_Image3: IncludeBinary "C:\Program Files\PB41beta\Projects\RTSMaker\ARW11NE.ICO" Wep_Image4: IncludeBinary "C:\Program Files\PB41beta\Projects\RTSMaker\ARW11W.ICO" Wep_Image5: IncludeBinary "C:\Program Files\PB41beta\Projects\RTSMaker\ARW11E.ICO" Wep_Image6: IncludeBinary "C:\Program Files\PB41beta\Projects\RTSMaker\ARW11SW.ICO" Wep_Image7: IncludeBinary "C:\Program Files\PB41beta\Projects\RTSMaker\ARW11S.ICO" Wep_Image8: IncludeBinary "C:\Program Files\PB41beta\Projects\RTSMaker\ARW11SE.ICO" Wep_Image9: IncludeBinary "C:\Program Files\PB41beta\Projects\RTSMaker\ARW11NW.ICO" EndDataSection Procedure ShowWep(LTiles.l(2)) ;this updates the display gadgets ;animation If RefUnit()\DLine SetGadgetState(#Wep_Line,#True) StartDrawing(ImageOutput(Wep_Image10)) Box(0,0,20,20,RefUnit()\CLine) StopDrawing() SetGadgetState(#Wep_LineColor,ImageID(Wep_Image10)) SetGadgetData(#Wep_LineColor,RefUnit()\CLine) Else SetGadgetState(#Wep_Line,#False) EndIf If RefUnit()\UTColor SetGadgetState(#Wep_SetBackColor,#True) StartDrawing(ImageOutput(Wep_Image11)) Box(0,0,20,20,RefUnit()\TColor) StopDrawing() SetGadgetData(#Wep_BackColor,RefUnit()\TColor) SetGadgetState(#Wep_BackColor,ImageID(Wep_Image11)) Else SetGadgetState(#Wep_SetBackColor,#False) EndIf SetGadgetText(#Wep_AniTime,Str(RefUnit()\FrameTime)) ;summary SetGadgetText(#Wep_Name,RefUnit()\Name) SetTextID( #Wep_Ammo , RefUnit()\Ammo[0] ) SetGadgetText(#Wep_MinRange,Str(RefUnit()\MinRange)) SetGadgetText(#Wep_MaxRange,Str(RefUnit()\MaxRange)) SetGadgetText(#Wep_Area, Str(RefUnit()\Area)) SetGadgetText(#Wep_Dam, Str(RefUnit()\Dammage)) SetGadgetText(#Wep_Aim, Str(RefUnit()\Aim)) If RefUnit()\PArmor SetGadgetState(#Wep_Piercing,#True) Else SetGadgetState(#Wep_Piercing,#False) EndIf SetGadgetText(#Wep_MoveSpeed, Str(RefUnit()\Speed)) If RefUnit()\Homing SetGadgetState(#Wep_Homing,#True) Else SetGadgetState(#Wep_Homing,#False) EndIf SetGadgetText(#Wep_ReloadTime, Str(RefUnit()\Rate)) ;advanced SetGadgetText(#Wep_Duration, Str(RefUnit()\Duration)) SetGadgetText(#Wep_Repeat, Str(RefUnit()\Redo)) If RefUnit()\ETemp SetGadgetState(#Wep_Temp,#True) Else SetGadgetState(#Wep_Temp,#False) EndIf If RefUnit()\CTeam SetGadgetState(#Wep_Team,#True) Else SetGadgetState(#Wep_Team,#False) EndIf If RefUnit()\CType SetGadgetState(#Wep_Change,#True) *Wep.UnitStruct=RefUnit()\CType SetGadgetText(#Wep_BType,*Wep\Name) SetGadgetData(#Wep_BType,*Wep) Else SetGadgetState(#Wep_Change,#False) SetGadgetText(#Wep_BType,"None") SetGadgetData(#Wep_BType,0) EndIf If RefUnit()\Teleport SetGadgetState(#Wep_Teleport,#True) If RefUnit()\Teleport=1 SetGadgetState(#Wep_Home,#True) ElseIf RefUnit()\Teleport=2 SetGadgetState(#Wep_Prison,#True) Else SetGadgetState(#Wep_Random,#True) EndIf Else SetGadgetState(#Wep_Teleport,#False) SetGadgetState(#Wep_Home,#False) SetGadgetState(#Wep_Prison,#False) SetGadgetState(#Wep_Random,#False) EndIf If RefUnit()\Neutral SetGadgetState(#Wep_Neutral,#True) Else SetGadgetState(#Wep_Neutral,#False) EndIf If RefUnit()\Stuned SetGadgetState(#Wep_Stun,#True) Else SetGadgetState(#Wep_Stun,#False) EndIf If RefUnit()\Scared SetGadgetState(#Wep_Scare,#True) Else SetGadgetState(#Wep_Scare,#False) EndIf If RefUnit()\IsBrave SetGadgetState(#Wep_Brave,#True) Else SetGadgetState(#Wep_Brave,#False) EndIf If RefUnit()\VChange SetGadgetState(#Wep_EVisible,#True) If RefUnit()\VChange=1 SetGadgetState(#Wep_VYes,#True) Else SetGadgetState(#Wep_VNo,#True) EndIf Else SetGadgetState(#Wep_EVisible,#False) EndIf SetGadgetText(#Wep_Armor, Str(RefUnit()\Armor)) SetGadgetText(#Wep_Health, Str(RefUnit()\Health)) SetGadgetText(#Wep_Speed, Str(RefUnit()\CSpeed)) If RefUnit()\CHeight SetGadgetState(#Wep_LChange,#True) SetGadgetText(#Wep_Height,Str(RefUnit()\CHeight)) Else SetGadgetState(#Wep_LChange,#False) SetGadgetText(#Wep_Height,Str(RefUnit()\CHeight)) EndIf If RefUnit()\LClear SetGadgetState(#Wep_Clear,#True) Else SetGadgetState(#Wep_Clear,#False) EndIf If RefUnit()\DelMove SetGadgetState(#Wep_DelMove,#True) If RefUnit()\DelMove & #MoveAir = #MoveAir SetGadgetState(#Wep_DAir,#True) Else SetGadgetState(#Wep_DAir,#False) EndIf If RefUnit()\DelMove & #MoveLand = #MoveLand SetGadgetState(#Wep_DLand,#True) Else SetGadgetState(#Wep_DLand,#False) EndIf If RefUnit()\DelMove & #MoveSea = #MoveSea SetGadgetState(#Wep_DSea,#True) Else SetGadgetState(#Wep_DSea,#False) EndIf Else SetGadgetState(#Wep_DelMove,#False) SetGadgetState(#Wep_DAir,#False) SetGadgetState(#Wep_DLand,#False) SetGadgetState(#Wep_DSea,#False) EndIf If RefUnit()\AddMove SetGadgetState(#Wep_AddMove,#True) If RefUnit()\AddMove & #MoveAir = #MoveAir SetGadgetState(#Wep_AAir,#True) Else SetGadgetState(#Wep_AAir,#False) EndIf If RefUnit()\AddMove & #MoveLand = #MoveLand SetGadgetState(#Wep_ALand,#True) Else SetGadgetState(#Wep_ALand,#False) EndIf If RefUnit()\AddMove & #MoveSea = #MoveSea SetGadgetState(#Wep_ASea,#True) Else SetGadgetState(#Wep_ASea,#False) EndIf Else SetGadgetState(#Wep_AddMove,#False) SetGadgetState(#Wep_AAir,#False) SetGadgetState(#Wep_ALand,#False) SetGadgetState(#Wep_ASea,#False) EndIf If RefUnit()\FFire SetGadgetState(#Wep_FFire,#True) Else SetGadgetState(#Wep_FFire,#False) EndIf If RefUnit()\TSelf SetGadgetState(#Wep_TSelf,#True) Else SetGadgetState(#Wep_TSelf,#False) EndIf ;from HandleWepWindow() Ref.l=0 For x=1 To 10 For y=1 To 10 LTiles(x,y)=RefUnit()\Tiles[Ref] Ref+1 Next y Next x ;(1,10) is the default display image If LTiles(1,10) SetGadgetState(#Wep_Image,ImageID(LTiles(1,10))) ResizeGadget(#Wep_Image,#PB_Ignore,#PB_Ignore,320,320) EndIf ;and reset image button states for default image SetState(#Wep_Center,#False) SetState(#Wep_TopLeft,#False) SetState(#Wep_Top,#False) SetState(#Wep_TopRight,#False) SetState(#Wep_Left,#False) SetState(#Wep_Right,#False) SetState(#Wep_BotLeft,#False) SetState(#Wep_Bot,#False) SetState(#Wep_BotRight,#False) If GetGadgetState(#Wep_Teleport) DisableGadget(#Wep_Home,#False) DisableGadget(#Wep_Prison,#False) DisableGadget(#Wep_Random,#False) Else DisableGadget(#Wep_Home,#True) DisableGadget(#Wep_Prison,#True) DisableGadget(#Wep_Random,#True) EndIf If GetGadgetState(#Wep_EVisible) DisableGadget(#Wep_VYes,#False) DisableGadget(#Wep_VNo,#False) Else DisableGadget(#Wep_VYes,#True) DisableGadget(#Wep_VNo,#True) EndIf If GetGadgetState(#Wep_DelMove) DisableGadget(#Wep_DAir,#False) DisableGadget(#Wep_DLand,#False) DisableGadget(#Wep_DSea,#False) Else DisableGadget(#Wep_DAir,#True) DisableGadget(#Wep_DLand,#True) DisableGadget(#Wep_DSea,#True) EndIf If GetGadgetState(#Wep_AddMove) DisableGadget(#Wep_AAir,#False) DisableGadget(#Wep_ALand,#False) DisableGadget(#Wep_ASea,#False) Else DisableGadget(#Wep_AAir,#True) DisableGadget(#Wep_ALand,#True) DisableGadget(#Wep_ASea,#True) EndIf If GetGadgetState(#Wep_Change) DisableGadget(#Wep_BType,#False) Else DisableGadget(#Wep_BType,#True) EndIf If GetGadgetState(#Wep_LChange) DisableGadget(#Wep_Height,#False) Else DisableGadget(#Wep_Height,#True) EndIf EndProcedure Procedure SaveWep(LTiles.l(2)) ;this saves display to structure IsDirty=#True ;animation RefUnit()\DLine=GetGadgetState(#Wep_Line) RefUnit()\CLine=GetGadgetData(#Wep_LineColor) RefUnit()\UTColor=GetGadgetState(#Wep_SetBackColor) RefUnit()\TColor=GetGadgetData(#Wep_BackColor) RefUnit()\FrameTime=Val(GetGadgetText(#Wep_AniTime)) ;summary RefUnit()\Name=GetGadgetText(#Wep_Name) RefUnit()\Ammo[0]=GetGadgetData( #Wep_Ammo ) RefUnit()\MinRange=Val(GetGadgetText(#Wep_MinRange)) RefUnit()\MaxRange=Val(GetGadgetText(#Wep_MaxRange)) RefUnit()\Area=Val(GetGadgetText(#Wep_Area)) RefUnit()\Dammage=Val(GetGadgetText(#Wep_Dam)) RefUnit()\Aim=Val(GetGadgetText(#Wep_Aim)) RefUnit()\PArmor=GetGadgetState(#Wep_Piercing) RefUnit()\Speed=Val(GetGadgetText(#Wep_MoveSpeed)) RefUnit()\Homing=GetGadgetState(#Wep_Homing) RefUnit()\Rate=Val(GetGadgetText(#Wep_ReloadTime)) ;advanced RefUnit()\Duration=Val(GetGadgetText(#Wep_Duration)) RefUnit()\Redo=Val(GetGadgetText(#Wep_Repeat)) RefUnit()\ETemp=GetGadgetState(#Wep_Temp) RefUnit()\CTeam=GetGadgetState(#Wep_Team) RefUnit()\CType=GetGadgetData(#Wep_BType) RefUnit()\Teleport=GetGadgetState(#Wep_Teleport) If RefUnit()\Teleport If GetGadgetState(#Wep_Prison) RefUnit()\Teleport=2 ElseIf GetGadgetState(#Wep_Random) RefUnit()\Teleport=3 EndIf EndIf RefUnit()\Neutral=GetGadgetState(#Wep_Neutral) RefUnit()\Stuned=GetGadgetState(#Wep_Stun) RefUnit()\Scared=GetGadgetState(#Wep_Scare) RefUnit()\IsBrave=GetGadgetState(#Wep_Brave) RefUnit()\VChange=GetGadgetState(#Wep_EVisible) If RefUnit()\VChange If GetGadgetState(#Wep_VNo) RefUnit()\VChange=2 EndIf EndIf RefUnit()\Armor=Val(GetGadgetText(#Wep_Armor)) RefUnit()\Health=Val(GetGadgetText(#Wep_Health)) RefUnit()\CSpeed=Val(GetGadgetText(#Wep_Speed)) If GetGadgetState(#Wep_LChange) RefUnit()\CHeight=Val(GetGadgetText(#Wep_Height)) Else RefUnit()\CHeight=0 EndIf RefUnit()\LClear=GetGadgetState(#Wep_Clear) If GetGadgetState(#Wep_DelMove) If GetGadgetState(#Wep_DAir) RefUnit()\DelMove=#MoveAir Else RefUnit()\DelMove=0 EndIf If GetGadgetState(#Wep_DLand) RefUnit()\DelMove + #MoveLand EndIf If GetGadgetState(#Wep_DSea) RefUnit()\DelMove + #MoveSea EndIf Else RefUnit()\DelMove=0 EndIf If GetGadgetState(#Wep_AddMove) If GetGadgetState(#Wep_AAir) RefUnit()\AddMove=#MoveAir Else RefUnit()\AddMove=0 EndIf If GetGadgetState(#Wep_ALand) RefUnit()\AddMove+#MoveLand EndIf If GetGadgetState(#Wep_ASea) RefUnit()\AddMove+#MoveSea EndIf Else RefUnit()\AddMove=0 EndIf RefUnit()\FFire=GetGadgetState(#Wep_FFire) RefUnit()\TSelf=GetGadgetState(#Wep_TSelf) ;from HandleWepWindow() Ref.l=0 For x=1 To 10 For y=1 To 10 LTiles(x,y)=RefUnit()\Tiles[Ref] Ref+1 Next y Next x ;(1,10) is the default display image If LTiles(1,10) SetGadgetState(#Wep_Image,ImageID(LTiles(1,10))) ResizeGadget(#Wep_Image,#PB_Ignore,#PB_Ignore,320,320) EndIf EndProcedure Macro SetWepImage(X,Y) CurrentX=X CurrentY=Y If LTiles(X,Y) SetGadgetState(#Wep_Image,ImageID(LTiles(X,Y))) Else SetGadgetState(#Wep_Image,ImageID(Wep_Image0)) EndIf ResizeGadget(#Wep_Image,#PB_Ignore,#PB_Ignore,320,320) EndMacro Procedure HandleWepWindow() PreferenceGroup("Programs") EditImage.s=ReadPreferenceString("Image","MSPaint.exe") ;copy images from structure ;so these can be changed or "undo" Dim LTiles.l(10,10) Ref.l=0 For x=1 To 10 For y=1 To 10 LTiles(x,y)=RefUnit()\Tiles[Ref] Ref+1 Next y Next x ;(1,10) is the default display image CurrentX.l=1 CurrentY.l=10 If LTiles(1,10) SetGadgetState(#Wep_Image,ImageID(LTiles(1,10))) ResizeGadget(#Wep_Image,#PB_Ignore,#PB_Ignore,320,320) ;and set default image button EndIf SetState(#Wep_Center,#True) If GetGadgetState(#Wep_Teleport) DisableGadget(#Wep_Home,#False) DisableGadget(#Wep_Prison,#False) DisableGadget(#Wep_Random,#False) Else DisableGadget(#Wep_Home,#True) DisableGadget(#Wep_Prison,#True) DisableGadget(#Wep_Random,#True) EndIf If GetGadgetState(#Wep_EVisible) DisableGadget(#Wep_VYes,#False) DisableGadget(#Wep_VNo,#False) Else DisableGadget(#Wep_VYes,#True) DisableGadget(#Wep_VNo,#True) EndIf If GetGadgetState(#Wep_DelMove) DisableGadget(#Wep_DAir,#False) DisableGadget(#Wep_DLand,#False) DisableGadget(#Wep_DSea,#False) Else DisableGadget(#Wep_DAir,#True) DisableGadget(#Wep_DLand,#True) DisableGadget(#Wep_DSea,#True) EndIf If GetGadgetState(#Wep_AddMove) DisableGadget(#Wep_AAir,#False) DisableGadget(#Wep_ALand,#False) DisableGadget(#Wep_ASea,#False) Else DisableGadget(#Wep_AAir,#True) DisableGadget(#Wep_ALand,#True) DisableGadget(#Wep_ASea,#True) EndIf If GetGadgetState(#Wep_Change) DisableGadget(#Wep_BType,#False) Else DisableGadget(#Wep_BType,#True) EndIf If GetGadgetState(#Wep_LChange) DisableGadget(#Wep_Height,#False) Else DisableGadget(#Wep_Height,#True) EndIf Repeat ; Start of the event loop Event = WaitWindowEvent() ; This line waits until an event is received from Windows WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures GadgetID = EventGadget() ; Is it a gadget event? EventType = EventType() ; The event type ;You can place code here, and use the result as parameters for the procedures If Event = #PB_Event_Gadget ;- Select Animation Direction If GadgetID = #Wep_Center SetActiveGadget(#Wep_Step) SetState(#Wep_Center,#True) SetState(#Wep_TopLeft,#False) SetState(#Wep_Top,#False) SetState(#Wep_TopRight,#False) SetState(#Wep_Left,#False) SetState(#Wep_Right,#False) SetState(#Wep_BotLeft,#False) SetState(#Wep_Bot,#False) SetState(#Wep_BotRight,#False) SetWepImage(1,10) ElseIf GadgetID = #Wep_TopLeft SetActiveGadget(#Wep_Step) SetState(#Wep_TopLeft,#True) SetState(#Wep_Top,#False) SetState(#Wep_TopRight,#False) SetState(#Wep_Left,#False) SetState(#Wep_Center,#False) SetState(#Wep_Right,#False) SetState(#Wep_BotLeft,#False) SetState(#Wep_Bot,#False) SetState(#Wep_BotRight,#False) SetWepImage(9,10) ElseIf GadgetID = #Wep_Top SetActiveGadget(#Wep_Step) SetState(#Wep_TopLeft,#False) SetState(#Wep_Top,#True) SetState(#Wep_TopRight,#False) SetState(#Wep_Left,#False) SetState(#Wep_Center,#False) SetState(#Wep_Right,#False) SetState(#Wep_BotLeft,#False) SetState(#Wep_Bot,#False) SetState(#Wep_BotRight,#False) SetWepImage(2,10) ElseIf GadgetID = #Wep_TopRight SetActiveGadget(#Wep_Step) SetState(#Wep_TopLeft,#False) SetState(#Wep_Top,#False) SetState(#Wep_TopRight,#True) SetState(#Wep_Left,#False) SetState(#Wep_Center,#False) SetState(#Wep_Right,#False) SetState(#Wep_BotLeft,#False) SetState(#Wep_Bot,#False) SetState(#Wep_BotRight,#False) SetWepImage(3,10) ElseIf GadgetID = #Wep_Left SetActiveGadget(#Wep_Step) SetState(#Wep_TopLeft,#False) SetState(#Wep_Top,#False) SetState(#Wep_TopRight,#False) SetState(#Wep_Left,#True) SetState(#Wep_Center,#False) SetState(#Wep_Right,#False) SetState(#Wep_BotLeft,#False) SetState(#Wep_Bot,#False) SetState(#Wep_BotRight,#False) SetWepImage(8,10) ElseIf GadgetID = #Wep_Right SetActiveGadget(#Wep_Step) SetState(#Wep_TopLeft,#False) SetState(#Wep_Top,#False) SetState(#Wep_TopRight,#False) SetState(#Wep_Left,#False) SetState(#Wep_Center,#False) SetState(#Wep_Right,#True) SetState(#Wep_BotLeft,#False) SetState(#Wep_Bot,#False) SetState(#Wep_BotRight,#False) SetWepImage(4,10) ElseIf GadgetID = #Wep_BotLeft SetActiveGadget(#Wep_Step) SetState(#Wep_TopLeft,#False) SetState(#Wep_Top,#False) SetState(#Wep_TopRight,#False) SetState(#Wep_Left,#False) SetState(#Wep_Center,#False) SetState(#Wep_Right,#False) SetState(#Wep_BotLeft,#True) SetState(#Wep_Bot,#False) SetState(#Wep_BotRight,#False) SetWepImage(7,10) ElseIf GadgetID = #Wep_Bot SetActiveGadget(#Wep_Step) SetState(#Wep_TopLeft,#False) SetState(#Wep_Top,#False) SetState(#Wep_TopRight,#False) SetState(#Wep_Left,#False) SetState(#Wep_Center,#False) SetState(#Wep_Right,#False) SetState(#Wep_BotLeft,#False) SetState(#Wep_Bot,#True) SetState(#Wep_BotRight,#False) SetWepImage(6,10) ElseIf GadgetID = #Wep_BotRight SetActiveGadget(#Wep_Step) SetState(#Wep_TopLeft,#False) SetState(#Wep_Top,#False) SetState(#Wep_TopRight,#False) SetState(#Wep_Left,#False) SetState(#Wep_Center,#False) SetState(#Wep_Right,#False) SetState(#Wep_BotLeft,#False) SetState(#Wep_Bot,#False) SetState(#Wep_BotRight,#True) SetWepImage(5,10) ;- Select Animation type ElseIf GadgetID = #Wep_Att SetGadgetState(#Wep_Start,#False) SetGadgetState(#Wep_Fin,#False) ElseIf GadgetID = #Wep_Start SetGadgetState(#Wep_Att,#False) SetGadgetState(#Wep_Fin,#False) ElseIf GadgetID = #Wep_Fin SetGadgetState(#Wep_Start,#False) SetGadgetState(#Wep_Att,#False) ;- Play Animation ElseIf GadgetID = #Wep_Step ElseIf GadgetID = #Wep_Play ;- Load Image ElseIf GadgetID = #Wep_LoadImage fn.s=OpenFileRequester("RTS Maker - Select Image File",RunPath+"*.bmp",#BMPPattern,0) If fn If IsImage(LTiles(CurrentX,CurrentY)) If LTiles(CurrentX,CurrentY)<>RefUnit()\Tiles[XY2Ref(CurrentX,CurrentY,10)] FreeImage(LTiles(CurrentX,CurrentY)) EndIf EndIf TID=LoadImage(#PB_Any,fn) If TID LTiles(CurrentX,CurrentY)=TID SetGadgetState(#Wep_Image,ImageID(TID)) ResizeGadget(#Wep_Image,#PB_Ignore,#PB_Ignore,320,320) Else MessageRequester("RTS Maker - Load Error","Unable to load image"+Chr(10)+fn,#MB_ICONINFORMATION) EndIf EndIf ElseIf GadgetID = #Wep_EditImage If IsImage(LTiles(CurrentX,CurrentY)) fn.s=SaveFileRequester( "RTS Maker - Save Image File",RunPath+"*.bmp",#BMPPattern,0) If fn If FindString(fn,".",1)=0 fn=fn+".bmp" EndIf If SaveImage(LTiles(CurrentX,CurrentY),fn) StickyWindow(#Wep_Window,#False) DisableWindow(#Wep_Window,#True) ;RunProgram(editimage,Chr(34)+fn+Chr(34),"",#PB_Program_Wait) SmartWait(editimage,Chr(34)+fn+Chr(34),"") DisableWindow(#Wep_Window,#False) StickyWindow(#Wep_Window,#True) SetActiveWindow(#Wep_Window) If FileSize(fn) If LTiles(CurrentX,CurrentY)<>RefUnit()\Tiles[XY2Ref(CurrentX,CurrentY,10)] FreeImage(LTiles(CurrentX,CurrentY)) EndIf TID=LoadImage(#PB_Any,fn) If TID LTiles(CurrentX,CurrentY)=TID SetGadgetState(#Wep_Image,ImageID(TID)) ResizeGadget(#Wep_Image,#PB_Ignore,#PB_Ignore,320,320) Else MessageRequester("RTS Maker - Load Error","Unable to re-load image"+Chr(10)+fn,#MB_ICONINFORMATION) EndIf Else MessageRequester("RTS Maker - Edit Error","Edit program deleted image"+Chr(10)+fn,#MB_ICONINFORMATION) EndIf Else MessageRequester("RTS Maker - Save Error","Unable to save image"+Chr(10)+fn,#MB_ICONINFORMATION) EndIf EndIf Else MessageRequester("RTS Maker - Save Error","No Image to save image",#MB_ICONINFORMATION) EndIf ;- Set Colors ElseIf GadgetID = #Wep_LineColor CLine.l=ColorRequester(GetGadgetData(#Wep_LineColor)) If CLine>-1 If CLine<>GetGadgetData(#Wep_LineColor) StartDrawing(ImageOutput(Wep_Image10)) Box(0,0,20,20,CLine) StopDrawing() SetGadgetState(#Wep_LineColor,ImageID(Wep_Image10)) SetGadgetData(#Wep_LineColor,CLine) EndIf EndIf ElseIf GadgetID = #Wep_BackColor CLine.l=ColorRequester(GetGadgetData(#Wep_BackColor)) If CLine>-1 If CLine<>GetGadgetData(#Wep_BackColor) StartDrawing(ImageOutput(Wep_Image10)) Box(0,0,20,20,CLine) StopDrawing() SetGadgetState(#Wep_BackColor,ImageID(Wep_Image10)) SetGadgetData(#Wep_BackColor,CLine) EndIf EndIf ElseIf GadgetID = #Wep_Help GetHelp("#wepdlg") ;- Settings ElseIf GadgetID = #Wep_Ammo ;browse for Ammo Type *CE=@RefUnit() *Wep.UnitStruct=GetGadgetData(#Wep_Ammo) If *Wep=0 ResetList(RefUnit()) Else ChangeCurrentElement(RefUnit(),*Wep) EndIf Open_Window_Browse(#ResourceType,#Wep_Window) If ListIndex(RefUnit())>=0 SetGadgetData(#Wep_Ammo,@RefUnit()) SetGadgetText(#Wep_Ammo,RefUnit()\Name) Else SetGadgetData(#Wep_Ammo,0) SetGadgetText(#Wep_Ammo,"None") EndIf ChangeCurrentElement(RefUnit(),*CE) ElseIf GadgetID = #Wep_Change If GetGadgetState(#Wep_Change) DisableGadget(#Wep_BType,#False) Else DisableGadget(#Wep_BType,#True) EndIf ElseIf GadgetID = #Wep_BType ;browse for unit type to change into *CE=@RefUnit() *Wep.UnitStruct=GetGadgetData(#Wep_BType) If *Wep=0 ResetList(RefUnit()) Else ChangeCurrentElement(RefUnit(),*Wep) EndIf Open_Window_Browse(#UnitType,#Wep_Window) If ListIndex(RefUnit())>=0 SetGadgetData(#Wep_BType,@RefUnit()) SetGadgetText(#Wep_BType,RefUnit()\Name) Else SetGadgetData(#Wep_BType,0) SetGadgetText(#Wep_BType,"None") EndIf ChangeCurrentElement(RefUnit(),*CE) ElseIf GadgetID = #Wep_Teleport If GetGadgetState(#Wep_Teleport) DisableGadget(#Wep_Home,#False) DisableGadget(#Wep_Prison,#False) DisableGadget(#Wep_Random,#False) Else DisableGadget(#Wep_Home,#True) DisableGadget(#Wep_Prison,#True) DisableGadget(#Wep_Random,#True) EndIf ElseIf GadgetID = #Wep_Home SetGadgetState(#Wep_Prison,#False) SetGadgetState(#Wep_Random,#False) ElseIf GadgetID = #Wep_Prison SetGadgetState(#Wep_Random,#False) SetGadgetState(#Wep_Home,#False) ElseIf GadgetID = #Wep_Random SetGadgetState(#Wep_Prison,#False) SetGadgetState(#Wep_Home,#False) ElseIf GadgetID = #Wep_EVisible If GetGadgetState(#Wep_EVisible) DisableGadget(#Wep_VYes,#False) DisableGadget(#Wep_VNo,#False) Else DisableGadget(#Wep_VYes,#True) DisableGadget(#Wep_VNo,#True) EndIf ElseIf GadgetID = #Wep_VYes SetGadgetState(#Wep_VNo,#False) ElseIf GadgetID = #Wep_VNo SetGadgetState(#Wep_VYes,#False) ElseIf GadgetID = #Wep_LChange If GetGadgetState(#Wep_LChange) DisableGadget(#Wep_Height,#False) Else DisableGadget(#Wep_Height,#True) EndIf ElseIf GadgetID = #Wep_DelMove If GetGadgetState(#Wep_DelMove) DisableGadget(#Wep_DAir,#False) DisableGadget(#Wep_DLand,#False) DisableGadget(#Wep_DSea,#False) Else DisableGadget(#Wep_DAir,#True) DisableGadget(#Wep_DLand,#True) DisableGadget(#Wep_DSea,#True) EndIf ElseIf GadgetID = #Wep_AddMove If GetGadgetState(#Wep_AddMove) DisableGadget(#Wep_AAir,#False) DisableGadget(#Wep_ALand,#False) DisableGadget(#Wep_ASea,#False) Else DisableGadget(#Wep_AAir,#True) DisableGadget(#Wep_ALand,#True) DisableGadget(#Wep_ASea,#True) EndIf ;- Import/Export/Save ElseIf GadgetID = #Wep_Prev If GetGadgetText(#Wep_Name)="" MessageRequester("RTS Maker - Weapon Error","Invalid Weapon Name",#MB_ICONSTOP) Else SaveWep(LTiles()) ;go to prev element *RE=@RefUnit() Done.l=CountList(RefUnit()) Repeat If PreviousElement(RefUnit())=0 LastElement(RefUnit()) EndIf If RefUnit()\Building=#WeaponType Break EndIf Done - 1 Until Done=0 If Done ShowWep(LTiles()) Else MessageRequester("RTS Maker - Weapon Error","Lost Weapon Location??",#MB_ICONSTOP) ChangeCurrentElement(RefUnit(),*RE) EndIf EndIf ElseIf GadgetID = #Wep_Next If GetGadgetText(#Wep_Name)="" MessageRequester("RTS Maker - Weapon Error","Invalid Weapon Name",#MB_ICONSTOP) Else SaveWep(LTiles()) *RE=@RefUnit() Done.l=CountList(RefUnit()) Repeat If NextElement(RefUnit())=0 FirstElement(RefUnit()) EndIf If RefUnit()\Building=#WeaponType Break EndIf Done - 1 Until Done=0 If Done ShowWep(LTiles()) Else MessageRequester("RTS Maker - Weapon Error","Lost Weapon Location??",#MB_ICONSTOP) ChangeCurrentElement(RefUnit(),*RE) EndIf EndIf ElseIf GadgetID = #Wep_New If GetGadgetText(#Wep_Name)="" MessageRequester("RTS Maker - Weapon Error","Invalid Weapon Name",#MB_ICONSTOP) Else SaveWep(LTiles()) ;go to last element and add a new element LastElement(RefUnit()) AddElement(RefUnit()) RefUnit()\Building=#WeaponType ShowWep(LTiles()) EndIf ElseIf GadgetID = #Wep_Del msg.s="This will remove this weapon from this Unit List."+Chr(10) msg=msg+"Other Units may require this weapon..."+Chr(10) msg=msg+"Please confirm you want to delete this weapon ?" IsDirty=#True If MessageRequester("RTS Maker - Delete Weapon",msg,#MB_YESNO | #MB_ICONQUESTION )=#IDYES DeleteElement(RefUnit()) FindLinkList(RefUnit(),RefUnit()\Building = #WeaponType ) If ListIndex(RefUnit())<0 Break EndIf EndIf ElseIf GadgetID = #Wep_Import If GetGadgetText(#Wep_Name)="" MessageRequester("RTS Maker - Weapon Error","Invalid Weapon Name",#MB_ICONSTOP) Else SaveWep(LTiles()) ;import ;LoadUnits(GetGadgetText(#Wep_Name)) FN$=OpenFileRequester("RTS Maker - Import Weapons",RunPath + "*.rtw",#UnitPattern,2) If FN$ LoadUnits(FN$) EndIf ShowWep(LTiles()) ;NoFeature( "Wep_Import" ) EndIf ElseIf GadgetID = #Wep_Export If GetGadgetText(#Wep_Name)="" MessageRequester("RTS Maker - Weapon Error","Invalid Weapon Name",#MB_ICONSTOP) Else SaveWep(LTiles()) ;SaveUnits(GetGadgetText(#Wep_Name)) FN$=OpenFileRequester("RTS Maker - Export Weapons",RunPath + "*.rtw",#UnitPattern,2) If FN$ saveUnits(FN$) EndIf ;NoFeature( "Wep_Export" ) EndIf ;export ElseIf GadgetID = #Wep_Cancel Break ElseIf GadgetID = #Wep_OK ;save settings and exit If GetGadgetText(#Wep_Name)="" MessageRequester("RTS Maker - Weapon Error","Invalid Weapon Name",#MB_ICONSTOP) Else SaveWep(LTiles()) Break EndIf EndIf EndIf Until Event = #PB_Event_CloseWindow ; End of the event loop EndProcedure Procedure Open_Wep_Window(CWID.l) ;CWID is calling window ;this needs to be disabled and then restored later If OpenWindow(#Wep_Window, 255, 138, 552, 324, "Weapon Design", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) If CreateGadgetList(WindowID(#Wep_Window)) ImageGadget(#Wep_Image, 0, 0, 320, 320, ImageID(Wep_Image0), #PB_Image_Border) PanelGadget(#Wep_Panel, 330, 0, 220, 320) ;- Animation Panel AddGadgetItem(#Wep_Panel, -1, "Animation") ButtonImageGadget(#Wep_Center, 48, 48, 40, 40, ImageID(Wep_Image1)) GadgetToolTip(#Wep_Center, "Attack Center") ButtonImageGadget(#Wep_Top, 48, 8, 40, 40, ImageID(Wep_Image2)) GadgetToolTip(#Wep_Top, "Attack Top") ButtonImageGadget(#Wep_TopRight, 88, 8, 40, 40, ImageID(Wep_Image3)) GadgetToolTip(#Wep_TopRight, "Attack Top Right") ButtonImageGadget(#Wep_Left, 8, 48, 40, 40, ImageID(Wep_Image4)) GadgetToolTip(#Wep_Left, "Attack Left") ButtonImageGadget(#Wep_Right, 88, 48, 40, 40, ImageID(Wep_Image5)) GadgetToolTip(#Wep_Right, "Attack Right") ButtonImageGadget(#Wep_BotLeft, 8, 88, 40, 40, ImageID(Wep_Image6)) GadgetToolTip(#Wep_BotLeft, "Attack Bottom Left") ButtonImageGadget(#Wep_Bot, 48, 88, 40, 40, ImageID(Wep_Image7)) GadgetToolTip(#Wep_Bot, "Attack Bottom") ButtonImageGadget(#Wep_BotRight, 88, 88, 40, 40, ImageID(Wep_Image8)) GadgetToolTip(#Wep_BotRight, "Attack Bottom Right") ButtonImageGadget(#Wep_TopLeft, 8, 8, 40, 40, ImageID(Wep_Image9)) GadgetToolTip(#Wep_TopLeft, "Attack Top Left") ButtonGadget(#Wep_Att, 148, 58, 50, 20, "Attack", #PB_Button_Default | #PB_Button_Toggle) GadgetToolTip(#Wep_Att, "View Attack Projectile") ButtonGadget(#Wep_Start, 148, 28, 50, 20, "Start", #PB_Button_Default | #PB_Button_Toggle) GadgetToolTip(#Wep_Start, "View Launch Animation") ButtonGadget(#Wep_Fin, 148, 88, 50, 20, "Finish", #PB_Button_Default | #PB_Button_Toggle) GadgetToolTip(#Wep_Fin, "View Impact Animation") ButtonGadget(#Wep_Step, 8, 138, 30, 20, "Step") GadgetToolTip(#Wep_Step, "Single Step Selected animation") StringGadget(#Wep_Frame, 48, 138, 40, 20, "", #PB_String_ReadOnly | #PB_String_Numeric) GadgetToolTip(#Wep_Frame, "Current Animation Frame") ButtonGadget(#Wep_Play, 98, 138, 30, 20, "Play") GadgetToolTip(#Wep_Play, "Play complete Animation") ButtonGadget(#Wep_LoadImage, 148, 168, 50, 20, "Load") GadgetToolTip(#Wep_LoadImage, "Load Animation Frame") ButtonGadget(#Wep_EditImage, 148, 198, 50, 20, "Edit") GadgetToolTip(#Wep_EditImage, "Edit Current Animation Frame") CheckBoxGadget(#Wep_Line, 8, 168, 70, 20, "Draw Line") GadgetToolTip(#Wep_Line, "Draw a line (Laser Shot)") ImageGadget(#Wep_LineColor, 98, 168, 20, 20, ImageID(Wep_Image10), #PB_Image_Border) GadgetToolTip(#Wep_LineColor, "Select a color for line drawing") If RefUnit()\DLine SetGadgetState(#Wep_Line,#True) StartDrawing(ImageOutput(Wep_Image10)) Box(0,0,20,20,RefUnit()\CLine) StopDrawing() SetGadgetState(#Wep_LineColor,ImageID(Wep_Image10)) SetGadgetData(#Wep_LineColor,RefUnit()\CLine) EndIf CheckBoxGadget(#Wep_SetBackColor, 8, 198, 80, 20, "Transparent") GadgetToolTip(#Wep_SetBackColor, "Use Transparent Color") If RefUnit()\UTColor SetGadgetState(#Wep_SetBackColor,#True) StartDrawing(ImageOutput(Wep_Image11)) Box(0,0,20,20,RefUnit()\TColor) StopDrawing() EndIf ImageGadget(#Wep_BackColor, 98, 198, 20, 20, ImageID(Wep_Image11), #PB_Image_Border) SetGadgetData(#Wep_BackColor,RefUnit()\TColor) GadgetToolTip(#Wep_BackColor, "Select a transparent color") StringGadget(#Wep_AniTime, 168, 138, 30, 20, Str(RefUnit()\FrameTime)) GadgetToolTip(#Wep_AniTime,"Time between animation Frames") TextGadget(#WText_0, 138, 138, 30, 20, "Time", #PB_Text_Center) Frame3DGadget(#WFrame3D_0, 138, 8, 70, 110, "Animation") TextGadget(#WText_19,8,228,40,20,"Sound") ButtonGadget(#Wep_PSound,48,228,40,20,"Play") GadgetToolTip(#Wep_PSound,"Play sound for selected animation") ButtonGadget(#Wep_LSound,98,228,40,20,"Load") GadgetToolTip(#Wep_LSound,"Load sound for selected animation") ButtonGadget(#Wep_Help,148,228,50,20,"Help") GadgetToolTip(#Wep_Help,"Click here for additional information") ;- Summary Panel AddGadgetItem(#Wep_Panel, -1, "Summary") TextGadget(#WText_2, 8, 8, 30, 20, "Name") StringGadget(#Wep_Name, 38, 8, 170, 20, RefUnit()\Name) GadgetToolTip(#Wep_Name,"Name of this Weapon") TextGadget(#WText_3, 8, 38, 30, 20, "Ammo") *Wep.UnitStruct=RefUnit()\Ammo[0] If *Wep=0 ButtonGadget(#Wep_Ammo, 38, 38, 170, 20, "None") Else ButtonGadget(#Wep_Ammo, 38, 38, 170, 20, *Wep\Name) SetGadgetData(#Wep_Ammo,*Wep) EndIf GadgetToolTip(#Wep_Ammo,"Browse for Ammunition type") TextGadget(#WText_4, 8, 68, 30, 20, "Range") StringGadget(#Wep_MinRange, 38, 68, 30, 20, Str(RefUnit()\MinRange), #PB_String_Numeric) GadgetToolTip(#Wep_MinRange,"Minimum Weapon Range") TextGadget(#WText_5, 68, 68, 20, 20, "To") StringGadget(#Wep_MaxRange, 88, 68, 30, 20, Str(RefUnit()\MaxRange), #PB_String_Numeric) GadgetToolTip(#Wep_MaxRange,"Maximum Weapon Range") TextGadget(#WText_6, 148, 68, 30, 20, "Area") StringGadget(#Wep_Area, 178, 68, 30, 20, Str(RefUnit()\Area), #PB_String_Numeric) GadgetToolTip(#Wep_Area,"Range of effective area (Blast)") TextGadget(#WText_8, 8, 98, 30, 20, "Hits") StringGadget(#Wep_Dam, 38, 98, 30, 20, Str(RefUnit()\Dammage), #PB_String_Numeric) GadgetToolTip(#Wep_Dam,"Blunt force damage") TextGadget(#WText_9, 128, 98, 50, 20, "Accuracy") StringGadget(#Wep_Aim, 178, 98, 30, 20, Str(RefUnit()\Aim), #PB_String_Numeric) GadgetToolTip(#Wep_Aim,"Percent to hit at effective range (0-100)") CheckBoxGadget(#Wep_Piercing, 78, 96, 50, 20, "Armor") If RefUnit()\PArmor SetGadgetState(#Wep_Piercing,#True) EndIf GadgetToolTip(#Wep_Piercing,"Weapon is designed to pierce Armor") TextGadget(#WText_10, 8, 128, 30, 20, "Speed") StringGadget(#Wep_MoveSpeed, 38, 128, 30, 20, Str(RefUnit()\Speed), #PB_String_Numeric) GadgetToolTip(#Wep_MoveSpeed,"Speed of weapon projectile") CheckBoxGadget(#Wep_Homing, 78, 126, 60, 20, "Homing") GadgetToolTip(#Wep_Homing,"Weapon tracks target") If RefUnit()\Homing SetGadgetState(#Wep_Homing,#True) EndIf TextGadget(#WText_12, 148, 128, 30, 20, "Time") StringGadget(#Wep_ReloadTime, 178, 128, 30, 20, Str(RefUnit()\Rate), #PB_String_Numeric) GadgetToolTip(#Wep_ReloadTime,"Time between shots") ButtonGadget(#Wep_Prev, 8, 218, 40, 30, "Prev") GadgetToolTip(#Wep_Prev,"Examine previous weapon") ButtonGadget(#Wep_Next, 58, 218, 40, 30, "Next") GadgetToolTip(#Wep_Next,"Examine Next Weapon") ButtonGadget(#Wep_New, 118, 218, 40, 30, "Create") GadgetToolTip(#Wep_New,"Create a new weapon") ButtonGadget(#Wep_Import, 8, 258, 40, 30, "Import") GadgetToolTip(#Wep_Import,"Import weapon from file") ButtonGadget(#Wep_Export, 58, 258, 40, 30, "Export") GadgetToolTip(#Wep_Export,"Export Weapon to file") ButtonGadget(#Wep_Cancel, 118, 258, 40, 30, "Cancel") GadgetToolTip(#Wep_Cancel,"Close and Cancel all changes") ButtonGadget(#Wep_OK, 168, 258, 40, 30, "OK") GadgetToolTip(#Wep_OK,"Close and save all changes") ButtonGadget(#Wep_Del,168, 218,40,30,"Del") GadgetToolTip(#Wep_Del,"Delete current weapon") ;- Advanced AddGadgetItem(#Wep_Panel, -1, "Advanced") TextGadget(#WText_13, 8, 8, 50, 20, "Duration") StringGadget(#Wep_Duration, 58, 8, 40, 20, Str(RefUnit()\Duration), #PB_String_Numeric) GadgetToolTip(#Wep_Duration,"How long effect lasts") TextGadget(#WText_14, 128, 8, 40, 20, "Repeat") StringGadget(#Wep_Repeat, 168, 8, 40, 20, Str(RefUnit()\Redo), #PB_String_Numeric) GadgetToolTip(#Wep_Repeat,"How long before effect repeats") CheckBoxGadget(#Wep_Temp, 8, 38, 70, 20, "Temporary") GadgetToolTip(#Wep_Temp,"All Effects go away after Duration") If RefUnit()\ETemp SetGadgetState(#Wep_Temp,#True) EndIf CheckBoxGadget(#Wep_Team, 8, 58, 200, 20, "Change Team and Attack") GadgetToolTip(#Wep_Team,"Unit becomes and ally and will attack original team") If RefUnit()\CTeam SetGadgetState(#Wep_Team,#True) EndIf CheckBoxGadget(#Wep_Change, 8, 78, 80, 20, "Change Unit") GadgetToolTip(#Wep_Change,"Unit changes type") ButtonGadget(#Wep_BType, 88, 78, 120, 20, "Browse for Unit Type") GadgetToolTip(#Wep_BType,"Type unit changes into") If RefUnit()\CType SetGadgetState(#Wep_Change,#True) *Wep.UnitStruct=RefUnit()\CType SetGadgetText(#Wep_BType,*Wep\Name) SetGadgetData(#Wep_BType,*Wep) EndIf CheckBoxGadget(#Wep_Teleport, 8, 118, 60, 20, "Teleport") GadgetToolTip(#Wep_Teleport,"Teleports unit to Home/Prison/Random") ButtonGadget(#Wep_Home, 68, 118, 40, 20, "Home", #PB_Button_Default | #PB_Button_Toggle) GadgetToolTip(#Wep_Home,"Teleports unit Home to Rally Point") ButtonGadget(#Wep_Prison, 118, 118, 40, 20, "Prison", #PB_Button_Default | #PB_Button_Toggle) GadgetToolTip(#Wep_Prison,"Teleports unit to nearest Prison facility") ButtonGadget(#Wep_Random, 168, 118, 40, 20, "Rand", #PB_Button_Default | #PB_Button_Toggle) GadgetToolTip(#Wep_Random,"Teleports unit to Random location") If RefUnit()\Teleport SetGadgetState(#Wep_Teleport,#True) If RefUnit()\Teleport=1 SetGadgetState(#Wep_Home,#True) ElseIf RefUnit()\Teleport=2 SetGadgetState(#Wep_Prison,#True) Else SetGadgetState(#Wep_Random,#True) EndIf EndIf CheckBoxGadget(#Wep_Neutral, 78, 38, 120, 20, "Flag Unit As Neutral") GadgetToolTip(#Wep_Neutral,"Permit unit to be claimed or found by other teams") If RefUnit()\Neutral SetGadgetState(#Wep_Neutral,#True) EndIf CheckBoxGadget(#Wep_Stun, 8, 98, 40, 20, "Stun") GadgetToolTip(#Wep_Stun,"Stuns unit for Duration. Unit cannot perform any action") If RefUnit()\Stuned SetGadgetState(#Wep_Stun,#True) EndIf CheckBoxGadget(#Wep_Scare, 58, 98, 50, 20, "Scare") GadgetToolTip(#Wep_Scare,"Scares unit for Duration. Unit will run away only") If RefUnit()\Scared SetGadgetState(#Wep_Scare,#True) EndIf CheckBoxGadget(#Wep_Brave, 118, 98, 80, 20, "Make Brave") GadgetToolTip(#Wep_Brave,"Unit will attack nearest enemy without fear") If RefUnit()\IsBrave SetGadgetState(#Wep_Brave,#True) EndIf CheckBoxGadget(#Wep_EVisible, 8, 158, 50, 20, "Visible") GadgetToolTip(#Wep_EVisible,"Enable Visibility changes") ButtonGadget(#Wep_VYes, 78, 158, 30, 20, "Yes", #PB_Button_Default | #PB_Button_Toggle) GadgetToolTip(#Wep_VYes,"Forces unit to be Visible to all") ButtonGadget(#Wep_VNo, 118, 158, 30, 20, "No", #PB_Button_Default | #PB_Button_Toggle) GadgetToolTip(#Wep_VNo,"Forces unit to be invisible to all") If RefUnit()\VChange SetGadgetState(#Wep_EVisible,#True) If RefUnit()\VChange=1 SetGadgetState(#Wep_VYes,#True) Else SetGadgetState(#Wep_VNo,#True) EndIf EndIf TextGadget(#WText_15, 8, 138, 30, 20, "Armor") StringGadget(#Wep_Armor, 38, 138, 30, 20, Str(RefUnit()\Armor), #PB_String_Numeric) GadgetToolTip(#Wep_Armor,"Changes Unit armor value (raise or lower)") TextGadget(#WText_16, 148, 138, 30, 20, "Health") StringGadget(#Wep_Health, 178, 138, 30, 20, Str(RefUnit()\Health), #PB_String_Numeric) GadgetToolTip(#Wep_Health,"Changes Unit Health value (raise or lower)") TextGadget(#WText_17, 78, 138, 30, 20, "Speed") StringGadget(#Wep_Speed, 118, 138, 30, 20, Str(RefUnit()\CSpeed), #PB_String_Numeric) GadgetToolTip(#Wep_Speed,"Changes Unit Speed (raise or lower)") CheckBoxGadget(#Wep_LChange, 8, 178, 110, 20, "Raise Lower Land") GadgetToolTip(#Wep_LChange,"Enable changes to ground height") StringGadget(#Wep_Height, 118, 178, 30, 20, "", #PB_String_Numeric) GadgetToolTip(#Wep_Height,"Ammount to change height (raise or lower)") If RefUnit()\CHeight SetGadgetState(#Wep_LChange,#True) SetGadgetText(#Wep_Height,Str(RefUnit()\CHeight)) EndIf CheckBoxGadget(#Wep_Clear, 158, 178, 50, 20, "Clear") GadgetToolTip(#Wep_Clear,"Clears all artifacts from land area (Nuc Bomb)") If RefUnit()\LClear SetGadgetState(#Wep_Clear,#True) EndIf CheckBoxGadget(#Wep_DelMove, 8, 218, 90, 20, "Del Movement") GadgetToolTip(#Wep_DelMove,"Enable deletions of movement options") ButtonGadget(#Wep_DAir, 98, 218, 30, 20, "Air", #PB_Button_Default | #PB_Button_Toggle) GadgetToolTip(#Wep_DAir,"Prevent unit from flying") ButtonGadget(#Wep_DLand, 128, 218, 30, 20, "Land", #PB_Button_Default | #PB_Button_Toggle) GadgetToolTip(#Wep_DLand,"Prevent unit from moving over land") ButtonGadget(#Wep_DSea, 158, 218, 30, 20, "Sea", #PB_Button_Default | #PB_Button_Toggle) GadgetToolTip(#Wep_DSea,"Prevent unit from moving by sea") If RefUnit()\DelMove SetGadgetState(#Wep_DelMove,#True) If RefUnit()\DelMove & #MoveAir = #MoveAir SetGadgetState(#Wep_DAir,#True) EndIf If RefUnit()\DelMove & #MoveLand = #MoveLand SetGadgetState(#Wep_DLand,#True) EndIf If RefUnit()\DelMove & #MoveSea = #MoveSea SetGadgetState(#Wep_DSea,#True) EndIf EndIf CheckBoxGadget(#Wep_AddMove, 8, 198, 90, 20, "Add Movement") GadgetToolTip(#Wep_AddMove,"Enable Additions of movement options") ButtonGadget(#Wep_AAir, 98, 198, 30, 20, "Air", #PB_Button_Default | #PB_Button_Toggle) GadgetToolTip(#Wep_AAir,"Permit unit to fly") ButtonGadget(#Wep_ALand, 128, 198, 30, 20, "Land", #PB_Button_Default | #PB_Button_Toggle) GadgetToolTip(#Wep_ALand,"Permit unit to move over land") ButtonGadget(#Wep_ASea, 158, 198, 30, 20, "Sea", #PB_Button_Default | #PB_Button_Toggle) GadgetToolTip(#Wep_ASea,"Permit unit to move over Sea") If RefUnit()\AddMove SetGadgetState(#Wep_AddMove,#True) If RefUnit()\AddMove & #MoveAir = #MoveAir SetGadgetState(#Wep_AAir,#True) EndIf If RefUnit()\AddMove & #MoveLand = #MoveLand SetGadgetState(#Wep_ALand,#True) EndIf If RefUnit()\AddMove & #MoveSea = #MoveSea SetGadgetState(#Wep_ASea,#True) EndIf EndIf CheckBoxGadget(#Wep_FFire, 8, 238, 80, 20, "Friendly Fire") GadgetToolTip(#Wep_FFire,"Weapon is designed to be used on friendly units (Add Health..)") If RefUnit()\FFire SetGadgetState(#Wep_FFire,#True) EndIf CheckBoxGadget(#Wep_TSelf, 98, 238, 100, 20, "Can Target Self") GadgetToolTip(#Wep_TSelf,"Weapon is designed to target self (Make self invisible ..)") If RefUnit()\TSelf SetGadgetState(#Wep_TSelf,#True) EndIf CloseGadgetList() ;- The Loop DisableWindow(CWID,#True) StickyWindow(#Wep_Window,#True) HandleWepWindow() CloseWindow(#Wep_Window) DisableWindow(CWID,#False) SetActiveWindow(CWID) EndIf EndIf EndProcedure