Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sweeps and spins. #3755

Conversation

LudwigVonChesterfield
Copy link
Contributor

@LudwigVonChesterfield LudwigVonChesterfield commented Aug 6, 2019

Описание изменений

Теперь кроме как шваброй можно махать-пихать различными вещами, а так же:

Щитами можно махать, и если кто-то упрётся в твой машущийся щит своим махком, его застанит, опрокинет.

Если имея что-то, что может пихать ты ударишь по руке с щитом - ты можешь опрокинуть щитоносца.

Хоткеи такие же как у швабры, только вещи которые можно "крутить", если они имеют какое-либо взаимодействие при "использовании" крутить можно на среднее колёсико мышки.

По конкретным предметам:

  • Топором можно крутиться и махать, но он довольно медленный. Он упирается об щит, и стены.

  • Копьём можно пихать, и даже атаковать через один тайл(Или притягивать и атаковать).

  • Энерго-милишные оружия можно махать и крутить, и они не упираются ни об что кроме *столов, мусоро, полочек.

  • Двойную саблю можно крутить.

2019-08-06_11-32-16

  • Тростью можно притягивать и отталкивать от людей, но не бить через тайл.

  • Если щитом пихнуть куклу об что-то, что мешает ей ходить, она упадёт

Откатывает #3974

Есть возможность эти все финты проворачивать с помощью мышки, если вы выбрали тайл рядом с вами, и начали его перетаскивать на тайл не рядом с вами - вы отпихнёте.

Если перетащили тайл не рядом с вами, на тот который рядом - притянете.

Если все "выделенные" вами тайлы будут рядом с вами - вы сделаете свайп по ним.

Если вы проведёте мышкой через себя из одной стороны в противоположную - вы начнётся крутиться.

Почему и что этот ПР улучшит

Добавит чуть больше механа нашей боёвочке.

🆑 Luduk

  • rscadd[link]: Крутить, махать, пихать можно не только шваброй.
  • rscadd: Пихание щитом кого-то об стену - опрокинет их.
  • tweak: Швабра теперь засовывается в тележку не альт-кликом а перетаскиванием её на тележку.

@TauKitty
Copy link
Contributor

TauKitty commented Aug 6, 2019

Changelog status: ✔️

@TauKitty TauKitty added the Feature Новая фича label Aug 6, 2019
@LudwigVonChesterfield LudwigVonChesterfield force-pushed the spin_and_slash branch 6 times, most recently from ae23865 to 8ed6ec1 Compare August 6, 2019 12:07
Now you can sweep and spin different weapons. Shields stun on sweep. Energy weapons don't care about hitting something, etc.
@Snailcat
Copy link
Member

Snailcat commented Aug 6, 2019

А лазерный двойной, когда крутишь, во все стороны снаряды отражает ?

@LudwigVonChesterfield
Copy link
Contributor Author

Я в недоумении от этого вопроса.

@SomeUselessGuy
Copy link
Contributor

А лазерный двойной, когда крутишь, во все стороны снаряды отражает ?

https://media.giphy.com/media/Ddab9zJPtaEmI/giphy.gif

@LudwigVonChesterfield
Copy link
Contributor Author

Учитывая что я это нигде не упоминул в описании ПР-а, вероятно, нет.

/obj/item/weapon
name = "weapon"
icon = 'icons/obj/weapons.dmi'

var/__interupt_on_sweep_hit_types = list(/atom) // By default we interupt on any hit.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нижнее подчёркивание - это подход из питона? Не вижу смысла тянуть выбивающийся из общего стиля практики.

Ещё мне не нравится то что ты добавил инстанс список каждому инстансу от вепона, при этом подавляющее большинство объектов его никогда использовать не будут. Посмотри в сторону ленивых списков и ленивой инциализации в целом. За референсом подсмотри сюда tgstation/tgstation#21245

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

По задумке это было что-то на подобие "приватных" переменных, но у нас такого не практикуют, и я их уберу.

Посмотрю на ленивые листы, да.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

У нас практикуют такое немного с переменными, но исключительно в аргументах чтобы не прибегать к src или другому наименованию. В переменных класса если уж очень хотелось как-то обозначить приватку (правда не ясно зачем все равно), то можно было специфический нейм префикс или суфикс сделать вида p_varname / private_varname.

/obj/item/weapon/proc/on_sweep_push(atom/target, turf/T, mob/user)
return

/obj/item/weapon/proc/on_sweep_push_success(atom/target, mob/user)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Может я чего и упускаю, но на первый взгляд on_sweep_push_success, как и on_sweep_pull_success, везде одинаковые. Где-то есть проверки на интент, но где они есть - там тоже всё идентично. У копья есть +2 строки, но остальное такое же. И то что ты везде, по факту, продублировал код - не выглядит хорошим дизайном.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Сделал переменную которая отличает копьё от остольного, убрал копипасту


var/__can_sweep = FALSE
var/__can_spin = FALSE
var/spin_on_middleclick = FALSE
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не совсем ясно, почему где-то мидлклик есть, а где-то нету?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Топоры имеют дейсвтие при использовании, и поэтому на это действие нельзя "забиндиить" кручение.

Что, кстати, было описано в шапке ПР-а.

@stale
Copy link

stale bot commented Sep 19, 2019

Данный ПР автоматически отмечен как застоявшийся по причине длительного отсутствия обновлений. Он будет закрыт через 7 дней, если никакой активности не будет проявлено. Если вы считаете, что ПР еще актуален, или что я (злобный робот) пристаю к вам зря - просто напишите любой комментарий. Спасибо за ваш вклад.

@stale stale bot added the Stalled PR label Sep 19, 2019
@stale
Copy link

stale bot commented Sep 26, 2019

ПР закрыт из-за длительного отсуствия активности. Для переоткрытия ПРа, пожалуйста, обратитесь к кому-либо из мейнтейнеров. Вы можете призвать их в комментарии слапнув @TauCetiStation/maintainers.

@stale stale bot closed this Sep 26, 2019
@LudwigVonChesterfield
Copy link
Contributor Author

Сделал что просили, перенёс текущий механ щита на то что есть в этом ПР-е, по сути откатил #3974

Откройте пожалуйста

@volas volas reopened this Sep 26, 2019
@stale stale bot removed Stalled PR labels Sep 26, 2019
@ZVee
Copy link
Contributor

ZVee commented Sep 26, 2019

ПР в нотисах засветился, поэтому решил заглянуть.
На мой взгляд тут компоненты былиб очень кстати к мидлклику, а куда сигнал пихать? Хммм, например в мидл клик там где смена рук.

@LudwigVonChesterfield
Copy link
Contributor Author

@volas Сделал управление мышью c:


var/list/turfs = getline(dropping_turf, target_turf)
var/list/directions = list()
world.log << "[turfs.len] [target.name] [dropping.name]"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👀

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👀


/obj/item/weapon/attack(mob/living/M, mob/living/user, def_zone)
. = ..()
if(. && can_push())
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, вот такие тоже моменты на компоненты в идеале надо закидывать

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А можно поподробнее?

Copy link
Contributor

@ZVee ZVee Sep 26, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вместо выдачи тонны переменных куда-то внизы и проков на низкие уровни, чтобы просто потом не тайпкастить и т.д (как это делали раньше часто, а сейчас так), можно выдавать компонент объектам нужным, и расставлять сигналы на те или иные действия куда надо. За подсказками можно вот к ТГ слазать, понять на что они в принципе бывают - https://github.com/tgstation/tgstation/blob/master/code/__DEFINES/components.dm#L64

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А и да, я не призываю это сейчас делать, но рассмотреть на будещее. И если что, у нас голый фреймворк на подскальзывание и все. Т.е вооружать нужными сигналами надо с нуля.

@LudwigVonChesterfield
Copy link
Contributor Author

(в этом ПР-е поправил конфликты)

@TauKitty
Copy link
Contributor

This pull request has been mentioned on Tau Ceti Station Forum. There might be relevant details there:

https://forum.taucetistation.org/t/discussion-kombo-orientirovannaya-boyovka/12387/59

@TauKitty
Copy link
Contributor

This pull request has been mentioned on Tau Ceti Station Forum. There might be relevant details there:

https://forum.taucetistation.org/t/discussion-kombo-orientirovannaya-boyovka/12387/102

@@ -132,6 +132,7 @@
break

QDEL_IN(sweep_image, sweep_delay)
sweep_image = null
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

У меня коммит тут просто высветился, поэтому заглянул.

Не совсем понятно, это ведь локальная переменная, что ее нуль дает?

@volas
Copy link
Member

volas commented Nov 2, 2019

Сделал управление мышью c:

Швабрам бы еще. Вообще было бы замечательно, будь отдельный ПР с управлением мышкой, включенным для швабр, и отдельно уже оружие.
Не известно, зайдет ли нам боевое махание, а вот швабры и управление к ним точно нужны.

@volas volas assigned volas and unassigned volas Nov 2, 2019
@volas volas self-requested a review November 2, 2019 08:43
@LudwigVonChesterfield
Copy link
Contributor Author

У швабр механ боевого махания, все вещи которые «машутся» машутся в том числе мышкой

var/spin_on_middleclick = FALSE
var/sweep_step = 4

/obj/item/weapon/proc/can_push()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

стена кода без существенных комментариев :/

Пояснения бы пригодились, как пример

@@ -1,7 +1,345 @@
/obj/effect/effect/weapon_sweep
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Стоит свайп-специфичные вещи (это и определения can_* + сами проки) вынести в отдельный файл, что бы не складывать сюда в одну кучу.

И еще соглашусь по поводу компонентов, с ними всё было бы аккуратнее.

@stale
Copy link

stale bot commented Dec 2, 2019

Данный ПР автоматически отмечен как застоявшийся по причине длительного отсутствия обновлений. Он будет закрыт через 7 дней, если никакой активности не будет проявлено. Если вы считаете, что ПР еще актуален, или что я (злобный робот) пристаю к вам зря - просто напишите любой комментарий. Спасибо за ваш вклад.

@stale stale bot added the Stalled PR label Dec 2, 2019
@stale
Copy link

stale bot commented Dec 9, 2019

ПР закрыт из-за длительного отсуствия активности. Для переоткрытия ПРа, пожалуйста, обратитесь к кому-либо из мейнтейнеров. Вы можете призвать их в комментарии слапнув @TauCetiStation/maintainers.

@stale stale bot closed this Dec 9, 2019
@LudwigVonChesterfield
Copy link
Contributor Author

Откройте ПР пожалуйста. Переделал всё на компоненты.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature Новая фича Stalled PR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants