Здравствуйте, гость ( Вход | Регистрация )

> Хилинг - Healing
NFx
сообщение 5.2.2005, 12:39
Сообщение #1


********

SpS 60+(умер), NE Priest 40+ жифф
Сообщений: 1.505
Регистрация: 3.9.2003
Группа: Пользователи
Наличность: 0
Из: Подмосковье
Пользователь №: 950



Выложенно в "Скрипты 54-55" telepups'ом.
Привожу для сведения, потому как вопрос насчет хилинга задается постоянно.

Код
[ITEMDEF 0e21] 

DEFNAME=i_bandage

RESOURCES=i_cloth

TYPE=T_eq_script

WEIGHT=.1

VALUE=2

DUPELIST=0ee9

CATEGORY=Items by Professions

SUBSECTION=Healer

DESCRIPTION=Clean Bandages



ON=@DClick

IF (0<SRC.FINDID.i_memory_healer>)

SRC.SYSMESSAGE You're already using your Healing skill.

RETURN 1

ENDIF

IF (<CONT.TOPOBJ.UID> != <SRC.UID>)

SRC.SYSMESSAGE You may only use these if they are on your person.

RETURN 1

ELSE

SRC.VAROPTIONS

TARGET Please target someone to use these on.

RETURN 1

ENDIF



ON=@Targon_Char

IF (<SRC.TARG.DISTANCE>>=5)

SRC.SYSMESSAGE The target is too far away.

RETURN 1

ENDIF

IF (0<VAR.POISON>==1)

IF (<SRC.TARG.FLAGS>&statf_poisoned)

 VAR.CUREACT=<SRC.ACT>

 SRC.NEWITEM=i_memory_healer

 SRC.ACT.MORE=1

 SRC.ACT.CONT=<SRC.UID>

 SRC.ACT.LINK=<SRC.TARG.UID>

 SRC.ACT.TIMER=5

 SRC.ACT=<VAR.CUREACT>

 VAR.CUREACT=

 SRC.EVENTS +e_death_mem_fix

 IF (0<VAR.INTERRUPT>==1)

  SRC.EVENTS +e_healing_interrupt

 ENDIF

 RETURN 1

ENDIF

ENDIF

IF (<SRC.TARG.FLAGS>&statf_dead)

IF (<SRC.HEALING>>=9000) && (<SRC.ANATOMY>>=9000)

SRC.HITS=<SRC.HITS> +- 50

 SRC.TARG.RESURRECT

 SRC.CONSUME 2 i_bandage  

 SRC.TARG.CONSUME 1 i_deathshroud

 VAR.HEALERUID=<SRC.UID>

 IF (0<VAR.CANCEL>==2)

   SRC.ACTION -1

 ENDIF

 RETURN 1

ELSE

 SRC.SYSMESSAGE You are lacking the required skill to do this.

 RETURN 1

ENDIF

ENDIF

IF (<SRC.TARG.HITS>==<SRC.TARG.STR>)

 SRC.SYSMESSAGE The target seems to be healthy.

 RETURN 1

ELSE

 IF (<SRC.TARG.UID>==<SRC.UID>)

   SRC.SYSMESSAGE You apply a bandage to yourself.

   SRC.CONSUME 1 i_bandage

   VAR.HEALERUID=<SRC.UID>

   IF (0<VAR.CANCEL>==2)

      SRC.ACTION -1

   ENDIF

   VAR.HEALACT1=<SRC.ACT>

   SRC.NEWITEM=i_memory_healer

   SRC.ACT.CONT=<SRC.UID>

   SRC.ACT.LINK=<SRC.TARG.UID>

   SRC.ACT.TIMER=4

   SRC.EVENTS +e_death_mem_fix

   IF (0<VAR.INTERRUPT>==1)

     SRC.EVENTS +e_healing_interrupt

   ENDIF

   SRC.ACT=<VAR.HEALACT1>

   VAR.HEALACT1=

   RETURN 1

 ELSE

   SRC.TARG.SYSMESSAGE <SRC.NAME> has applied a bandage to you.

   SRC.SYSMESSAGE You apply a bandage to <SRC.TARG.NAME>.

   SRC.CONSUME 1 i_bandage

   VAR.HEALERUID=<SRC.UID>

   IF (0<VAR.CANCEL>==2)

      SRC.ACTION -1

   ENDIF

   VAR.HEALACT2=<SRC.ACT>

   SRC.NEWITEM=i_memory_healer

   SRC.ACT.CONT=<SRC.UID>

   SRC.ACT.LINK=<SRC.TARG.UID>

   SRC.ACT.TIMER=4

   SRC.EVENTS +e_death_mem_fix

   IF (0<VAR.INTERRUPT>==1)

      SRC.EVENTS +e_healing_interrupt

   ENDIF

   SRC.ACT=<VAR.HEALACT2>

   VAR.HEALACT2=

   RETURN 1

 ENDIF

ENDIF







[ITEMDEF i_memory_healer]

ID=i_memory

NAME=Healer

WEIGHT=0

TYPE=t_eq_script



ON=@Create

ATTR=attr_newbie|attr_invis|attr_decay



ON=@Timer

IF (<MORE>==1)

CUREPOISON

RETURN 1

ENDIF

IF (<LINK.FLAGS>&statf_dead)

REMOVE

RETURN 1

ENDIF

VAR.HEALINGACT=<CONT.ACT>

IF (<CONT.HEALING>>=001) && (<CONT.HEALING><200)

FAIL_CHANCE

GAIN_CHANCE

CRIMACTION

LINK.HITS=<LINK.HITS> + {1 3}

LINK.NEWITEM=i_bandage_bloody



LINK.ACT.CONT=<CONT.UID>

LINK.ACT=<VAR.HEALINGACT>

VAR.HEALINGACT=

IF (<LINK.HITS> > <LINK.STR>)

LINK.HITS=<LINK.STR>

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

ENDIF

IF (<CONT.HEALING>>=200) && (<CONT.HEALING><300)

FAIL_CHANCE

GAIN_CHANCE

CRIMACTION

LINK.HITS=<LINK.HITS> + {2 5}

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<CONT.UID>

LINK.ACT=<VAR.HEALINGACT>

VAR.HEALINGACT=

IF (<LINK.HITS> > <LINK.STR>)

LINK.HITS=<LINK.STR>

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

ENDIF

IF (<CONT.HEALING>>=300) && (<CONT.HEALING><400)

FAIL_CHANCE

GAIN_CHANCE

CRIMACTION

LINK.HITS=<LINK.HITS> + {5 7}

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<LINK.UID>

CLINK.ACT=<VAR.HEALINGACT>

VAR.HEALINGACT=

IF (<LINK.HITS> > <LINK.STR>)

LINK.HITS=<LINK.STR>

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

ENDIF

IF (<CONT.HEALING>>=400) && (<CONT.HEALING><500)

FAIL_CHANCE

GAIN_CHANCE

CRIMACTION

LINK.HITS=<CONT.HITS> + {6 10}

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<CONT.UID>

LINK.ACT=<VAR.HEALINGACT>

VAR.HEALINGACT=

IF (<LINK.HITS> > <LINK.STR>)

LINK.HITS=<LINK.STR>

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

ENDIF

IF (<CONT.HEALING>>=500) && (<CONT.HEALING><600)

FAIL_CHANCE

GAIN_CHANCE

CRIMACTION

LINK.HITS=<LINK.HITS> + {8 14}

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<LINK.UID>

LINK.ACT=<VAR.HEALINGACT>

VAR.HEALINGACT=

IF (<LINK.HITS> > <LINK.STR>)

LINK.HITS=<LINK.STR>

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

ENDIF

IF (<CONT.HEALING>>=600) && (<CONT.HEALING><700)

FAIL_CHANCE

GAIN_CHANCE

CRIMACTION

LINK.HITS=<LINK.HITS> + {9 17}

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<LINK.UID>

LINK.ACT=<VAR.HEALINGACT>

VAR.HEALINGACT=

IF (<LINK.HITS> > <LINK.STR>)

LINK.HITS=<LINK.STR>

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

ENDIF

IF (<CONT.HEALING>>=700) && (<CONT.HEALING><800)

FAIL_CHANCE

GAIN_CHANCE

CRIMACTION

LINK.HITS=<LINK.HITS> + {11 20}

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<LINK.UID>

LINK.ACT=<VAR.HEALINGACT>

VAR.HEALINGACT=

IF (<LINK.HITS> > <LINK.STR>)

LINK.HITS=<LINK.STR>

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

ENDIF

IF (<CONT.HEALING>>=800) && (<CONT.HEALING><900)

FAIL_CHANCE

GAIN_CHANCE

CRIMACTION

LINK.HITS=<LINK.HITS> + {13 24}

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<CONT.UID>

LINK.ACT=<VAR.HEALINGACT>

VAR.HEALINGACT=

IF (<LINK.HITS> > <LINK.STR>)

LINK.HITS=<LINK.STR>

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

ENDIF

IF (<CONT.HEALING>>=900) && (<CONT.HEALING><1000)

FAIL_CHANCE

GAIN_CHANCE

CRIMACTION

LINK.HITS=<LINK.HITS> + {16 32}

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<LINK.UID>

LINK.ACT=<VAR.HEALINGACT>

VAR.HEALINGACT=

IF (<LINK.HITS> > <LINK.STR>)

LINK.HITS=<LINK.STR>

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

ENDIF

IF (<CONT.HEALING>>=1001) && (<CONT.HEALING><2001)

FAIL_CHANCE

GAIN_CHANCE

CRIMACTION

LINK.HITS=<LINK.HITS> + {15 20}

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<LINK.UID>

LINK.ACT=<VAR.HEALINGACT>

VAR.HEALINGACT=

IF (<LINK.HITS> > <LINK.STR>)

LINK.HITS=<LINK.STR>

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

ENDIF

IF (<CONT.HEALING>>=1000)

IF (0<VAR.CRIMINAL>==2)

RETURN 0

ELSE

CRIMACTION

LINK.HITS=<LINK.HITS> + {30 42}

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<LINK.UID>

LINK.ACT=<VAR.HEALINGACT>

VAR.HEALINGACT=

VAR.GAINCHANCE=

IF (<LINK.HITS> > <LINK.STR>)

LINK.HITS=<LINK.STR>

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

ENDIF

CONT.EVENTS -e_healing_interrupt

CONT.EVENTS -e_death_mem_fix





[FUNCTION Fail_Chance]

VAR.FAILCHANCE=<EVAL {1 1000}>

IF (<VAR.FAIL>==2)

RETURN 0

ENDIF

IF (<VAR.FAIL>==1)

IF <VAR.FAILCHANCE> > <CONT.HEALING>

IF (<LINK.UID>==<CONT.UID>)

LINK.SYSMESSAGE You have failed to heal yourself.

CONT.FINDID.i_memory_healer.REMOVE

RETURN 1

ELSE

CONT.SYSMESSAGE You have failed to heal <CONT.NAME>.

LINK.SYSMESSAGE <LINK.NAME> has failed to heal you.

CONT.FINDID.i_memory_healer.REMOVE

RETURN 1

ENDIF

ENDIF

ENDIF





[FUNCTION Gain_Chance]

IF <CONT.HEALING>>=1000

VAR.GAINCHANCE=0

RETURN 1

ELSE

VAR.GAINCHANCE=<VAR.GAINCHANCE> + 90

IF 0<VAR.GAINCHANCE> > <LINK.HEALING>

CONT.HEALING=<CONT.HEALING> + 0.1

VAR.GAINCHANCE=0

RETURN 0

ENDIF

ENDIF





[FUNCTION VarOptions]

// Enable is 1.

// Disable is 2 .

VAR.INTERRUPT=2

VAR.CRIMINAL=1

VAR.CANCEL=1

VAR.POISON=2

VAR.FAIL=1





[FUNCTION CurePoison]

VAR.POISONACT=<CONT.ACT>

IF (0<VAR.POISON>==2)

RETURN 1

ELSE

IF (<CONT.HEALING>>=001) && (<CONT.HEALING><200)

FAIL_POISON

GAIN_CHANCE

CRIMACTION

LINK.FINDLAYER(42).REMOVE

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<CONT.UID>

LINK.ACT=<VAR.POISONACT>

VAR.POISONACT=

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

IF (<CONT.HEALING>>=200) && (<CONT.HEALING><300)

FAIL_POISON

GAIN_CHANCE

CRIMACTION

LINK.FINDLAYER(42).REMOVE

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<CONT.UID>

LINK.ACT=<VAR.POISONACT>

VAR.POISONACT=

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

IF (<CONT.HEALING>>=300) && (<CONT.HEALING><400)

FAIL_POISON

GAIN_CHANCE

CRIMACTION

LINK.FINDLAYER(42).REMOVE

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<LINK.UID>

LINK.ACT=<VAR.POISONACT>

VAR.POISONACT=

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

IF (<CONT.HEALING>>=400) && (<CONT.HEALING><500)

FAIL_POISON

GAIN_CHANCE

CRIMACTION

LINK.FINDLAYER(42).REMOVE

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<CONT.UID>

LINK.ACT=<VAR.POISONACT>

VAR.POISONACT=

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

IF (<CONT.HEALING>>=500) && (<CONT.HEALING><600)

FAIL_POISON

GAIN_CHANCE

CRIMACTION

LINK.FINDLAYER(42).REMOVE

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<LINK.UID>

LINK.ACT=<VAR.POISONACT>

VAR.POISONACT=

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

IF (<CONT.HEALING>>=600) && (<CONT.HEALING><700)

FAIL_POISON

GAIN_CHANCE

CRIMACTION

LINK.FINDLAYER(42).REMOVE

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<LINK.UID>

LINK.ACT=<VAR.POISONACT>

REMOVE

VAR.POISONACT=

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

IF (<CONT.HEALING>>=700) && (<CONT.HEALING><800)

FAIL_POISON

GAIN_CHANCE

CRIMACTION

LINK.FINDLAYER(42).REMOVE

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<LINK.UID>

LINK.ACT=<VAR.POISONACT>

VAR.POISONACT=

REMOVE

LINK.UPDATE

CONT.UPDATE

RETURN 1

ENDIF

IF (<CONT.HEALING>>=800) && (<CONT.HEALING><900)

FAIL_POISON

GAIN_CHANCE

CRIMACTION

LINK.FINDLAYER(42).REMOVE

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<CONT.UID>

LINK.ACT=<VAR.POISONACT>

VAR.POISONACT=

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

IF (<CONT.HEALING>>=900) && (<CONT.HEALING><1000)

FAIL_POISON

GAIN_CHANCE

CRIMACTION

LINK.FINDLAYER(42).REMOVE

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<LINK.UID>

LINK.ACT=<VAR.POISONACT>

VAR.POISONACT=

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

IF (<CONT.HEALING>>=1000)

CRIMACTION

LINK.FINDLAYER(42).REMOVE

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<LINK.UID>

LINK.ACT=<VAR.POISONACT>

VAR.POISONACT=

VAR.GAINCHANCE=

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

IF (<CONT.HEALING>>=1001) && (<CONT.HEALING><2001)

FAIL_POISON

GAIN_CHANCE

CRIMACTION

LINK.FINDLAYER(42).REMOVE

LINK.NEWITEM=i_bandage_bloody

LINK.ACT.CONT=<LINK.UID>

LINK.ACT=<VAR.POISONACT>

VAR.POISONACT=

LINK.UPDATE

CONT.UPDATE

REMOVE

RETURN 1

ENDIF

ENDIF

CONT.EVENTS -e_healing_interrupt

CONT.EVENTS -e_death_mem_fix





[FUNCTION Fail_Chance]

VAR.FAILCHANCE=<EVAL {1 1000}>

IF (<VAR.FAIL>==2)

RETURN 0

ENDIF

IF (<VAR.FAIL>==1)

IF <VAR.FAILCHANCE> > <CONT.HEALING>

IF (<LINK.UID>==<CONT.UID>)

LINK.SYSMESSAGE You have failed to heal yourself.

CONT.FINDID.i_memory_healer.REMOVE

RETURN 1

ELSE

CONT.SYSMESSAGE You have failed to heal <CONT.NAME>.

LINK.SYSMESSAGE <LINK.NAME> has failed to heal you.

CONT.FINDID.i_memory_healer.REMOVE

RETURN 1

ENDIF

ENDIF

ENDIF





[FUNCTION Fail_Poison]

VAR.FAILPOISON=<EVAL {1 1000}>

IF (<VAR.FAIL>==2)

RETURN 0

ENDIF

IF (<VAR.FAIL>==1)

IF <VAR.FAILPOISON> > <CONT.HEALING>

IF (<LINK.UID>==<CONT.UID>)

LINK.SYSMESSAGE You have failed to cure yourself.

CONT.FINDID.i_memory_healer.REMOVE

RETURN 1

ELSE

CONT.SYSMESSAGE You have failed to cure <CONT.NAME>.

LINK.SYSMESSAGE <LINK.NAME> has failed to cure you.

CONT.FINDID.i_memory_healer.REMOVE

RETURN 1

ENDIF

ENDIF

ENDIF





[FUNCTION CrimAction]

IF (0<VAR.CRIMINAL>==2)

RETURN 1

ELSE

IF (<LINK.KILLS> >= <SERV.MURDERMINCOUNT>) || (<LINK.FLAGS>&statf_criminal)

CONT.SYSMESSAGE You are now a criminal for your action.

CONT.CRIMINAL=1

ENDIF

ENDIF





[EVENTS e_healing_interrupt]

ON=@GetHit

MESSAGE Interrupted!

FINDID.i_memory_healer.REMOVE

EVENTS -e_healing_interrupt

RETURN 0





[EVENTS e_death_mem_fix]

ON=@Death

FINDID.i_memory_healer.REMOVE

EVENTS -e_death_mem_fix

RETURN 0


--------------------
Важна не реклама, а качество.
Качество - девиз хороших серверов.
Продуманность и готовность - девиз очень хороших серверов.
..::Lorien Role-Playing Shard(RunUO)::..
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме


Тема закрытаОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 24.6.2025, 2:16
Designed by Nickostyle