mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
@@ -13,6 +13,8 @@
|
||||
using.icon = ui_style
|
||||
using.icon_state = "intent_"+mymob.a_intent
|
||||
using.screen_loc = ui_acti
|
||||
using.color = ui_color
|
||||
using.alpha = ui_alpha
|
||||
using.layer = 20
|
||||
src.adding += using
|
||||
action_intent = using
|
||||
@@ -27,6 +29,7 @@
|
||||
using.name = "help"
|
||||
using.icon = ico
|
||||
using.screen_loc = ui_acti
|
||||
using.alpha = ui_alpha
|
||||
using.layer = 21
|
||||
src.adding += using
|
||||
help_intent = using
|
||||
@@ -38,6 +41,7 @@
|
||||
using.name = "disarm"
|
||||
using.icon = ico
|
||||
using.screen_loc = ui_acti
|
||||
using.alpha = ui_alpha
|
||||
using.layer = 21
|
||||
src.adding += using
|
||||
disarm_intent = using
|
||||
@@ -49,6 +53,7 @@
|
||||
using.name = "grab"
|
||||
using.icon = ico
|
||||
using.screen_loc = ui_acti
|
||||
using.alpha = ui_alpha
|
||||
using.layer = 21
|
||||
src.adding += using
|
||||
grab_intent = using
|
||||
@@ -60,6 +65,7 @@
|
||||
using.name = "harm"
|
||||
using.icon = ico
|
||||
using.screen_loc = ui_acti
|
||||
using.alpha = ui_alpha
|
||||
using.layer = 21
|
||||
src.adding += using
|
||||
hurt_intent = using
|
||||
@@ -440,23 +446,24 @@
|
||||
|
||||
//Handle the gun settings buttons
|
||||
mymob.gun_setting_icon = new /obj/screen/gun/mode(null)
|
||||
//mymob.gun_setting_icon.color = ui_color
|
||||
mymob.gun_setting_icon.alpha = ui_alpha
|
||||
|
||||
mymob.item_use_icon = new /obj/screen/gun/item(null)
|
||||
//mymob.item_use_icon.color = ui_color
|
||||
mymob.item_use_icon.alpha = ui_alpha
|
||||
|
||||
mymob.gun_move_icon = new /obj/screen/gun/move(null)
|
||||
//mymob.gun_move_icon.color = ui_color
|
||||
mymob.gun_move_icon.alpha = ui_alpha
|
||||
|
||||
mymob.gun_run_icon = new /obj/screen/gun/run(null)
|
||||
//mymob.gun_run_icon.color = ui_color
|
||||
mymob.gun_run_icon.alpha = ui_alpha
|
||||
|
||||
if (mymob.client)
|
||||
if (mymob.client.gun_mode) // If in aim mode, correct the sprite
|
||||
mymob.gun_setting_icon.dir = 2
|
||||
for(var/obj/item/weapon/gun/G in mymob) // If targeting someone, display other buttons
|
||||
if (G.target)
|
||||
mymob.item_use_icon = new /obj/screen/gun/item(null)
|
||||
if (mymob.client.target_can_click)
|
||||
mymob.item_use_icon.dir = 1
|
||||
src.adding += mymob.item_use_icon
|
||||
mymob.gun_move_icon = new /obj/screen/gun/move(null)
|
||||
if (mymob.client.target_can_move)
|
||||
mymob.gun_move_icon.dir = 1
|
||||
mymob.gun_run_icon = new /obj/screen/gun/run(null)
|
||||
if (mymob.client.target_can_run)
|
||||
mymob.gun_run_icon.dir = 1
|
||||
src.adding += mymob.gun_run_icon
|
||||
src.adding += mymob.gun_move_icon
|
||||
|
||||
|
||||
mymob.client.screen = null
|
||||
@@ -495,7 +502,7 @@
|
||||
for(var/obj/item/I in src)
|
||||
if(I.icon_action_button)
|
||||
var/obj/screen/item_action/A = new(hud_used)
|
||||
|
||||
|
||||
//A.icon = 'icons/mob/screen1_action.dmi'
|
||||
//A.icon_state = I.icon_action_button
|
||||
A.icon = ui_style2icon(client.prefs.UI_style)
|
||||
|
||||
@@ -12,6 +12,7 @@ datum/controller/vote
|
||||
var/list/voted = list()
|
||||
var/list/voting = list()
|
||||
var/list/current_votes = list()
|
||||
var/list/additional_text = list()
|
||||
var/auto_muted = 0
|
||||
|
||||
New()
|
||||
@@ -63,6 +64,7 @@ datum/controller/vote
|
||||
voted.Cut()
|
||||
voting.Cut()
|
||||
current_votes.Cut()
|
||||
additional_text.Cut()
|
||||
|
||||
/* if(auto_muted && !ooc_allowed)
|
||||
auto_muted = 0
|
||||
@@ -210,6 +212,13 @@ datum/controller/vote
|
||||
if(ticker.current_state >= 2)
|
||||
return 0
|
||||
choices.Add(config.votable_modes)
|
||||
var/list/L = typesof(/datum/game_mode) - /datum/game_mode
|
||||
for (var/F in choices)
|
||||
for (var/T in L)
|
||||
var/datum/game_mode/M = new T()
|
||||
if (M.config_tag == F)
|
||||
additional_text.Add("<td align = 'center'>[M.required_players]</td>")
|
||||
break
|
||||
if("crew_transfer")
|
||||
if(check_rights(R_ADMIN|R_MOD, 0))
|
||||
question = "End the shift?"
|
||||
@@ -290,16 +299,24 @@ datum/controller/vote
|
||||
if(mode)
|
||||
if(question) . += "<h2>Vote: '[question]'</h2>"
|
||||
else . += "<h2>Vote: [capitalize(mode)]</h2>"
|
||||
. += "Time Left: [time_remaining] s<hr><ul>"
|
||||
. += "Time Left: [time_remaining] s<hr>"
|
||||
. += "<table width = '100%'><tr><td align = 'center'><b>Choices</b></td><td align = 'center'><b>Votes</b></td>"
|
||||
if(capitalize(mode) == "Gamemode") .+= "<td align = 'center'><b>Minimum Players</b></td></b></tr>"
|
||||
|
||||
for(var/i = 1, i <= choices.len, i++)
|
||||
var/votes = choices[choices[i]]
|
||||
if(!votes) votes = 0
|
||||
. += "<tr>"
|
||||
if(current_votes[C.ckey] == i)
|
||||
. += "<li><b><a href='?src=\ref[src];vote=[i]'>[choices[i]] ([votes] votes)</a></b></li>"
|
||||
. += "<td><b><a href='?src=\ref[src];vote=[i]'>[choices[i]]</a></b></td><td align = 'center'>[votes]</td>"
|
||||
else
|
||||
. += "<li><a href='?src=\ref[src];vote=[i]'>[choices[i]] ([votes] votes)</a></li>"
|
||||
. += "<td><a href='?src=\ref[src];vote=[i]'>[choices[i]]</a></b></td><td align = 'center'>[votes]</td>"
|
||||
|
||||
. += "</ul><hr>"
|
||||
if (additional_text.len >= i)
|
||||
. += additional_text[i]
|
||||
. += "</tr>"
|
||||
|
||||
. += "</table><hr>"
|
||||
if(admin)
|
||||
. += "(<a href='?src=\ref[src];vote=cancel'>Cancel Vote</a>) "
|
||||
else
|
||||
|
||||
@@ -1368,19 +1368,17 @@ It is possible to destroy the net by the occupant or someone else.
|
||||
playsound(M.loc, 'sound/effects/sparks2.ogg', 50, 1)
|
||||
anim(M.loc,M,'icons/mob/mob.dmi',,"phasein",,M.dir)
|
||||
del(src)//Wait for everything to finish, delete the net. Else it will stop everything once net is deleted, including the spawn(0).
|
||||
else
|
||||
M.loc = null
|
||||
|
||||
M << "\red You appear in a strange place!"
|
||||
M << "\red You appear in a strange place!"
|
||||
|
||||
for(var/mob/O in viewers(src, 3))
|
||||
O.show_message(text("[] vanished!", M), 1, text("You hear sparks flying!"), 2)
|
||||
for(var/mob/O in viewers(src, 3))
|
||||
O.show_message(text("[] vanished!", M), 1, text("You hear sparks flying!"), 2)
|
||||
|
||||
if(!isnull(master))//As long as they still exist.
|
||||
master << "\blue <b>SUCCESS</b>: \black transport procedure of \the [affecting] complete."
|
||||
if(!isnull(master))//As long as they still exist.
|
||||
master << "\blue <b>SUCCESS</b>: \black transport procedure of \the [affecting] complete."
|
||||
|
||||
M.captured = 0 //Important.
|
||||
M.anchored = initial(M.anchored) //Changes the mob's anchored status to the original one; this is not handled by the can_move proc.
|
||||
M.captured = 0 //Important.
|
||||
M.anchored = initial(M.anchored) //Changes the mob's anchored status to the original one; this is not handled by the can_move proc.
|
||||
|
||||
else//And they are free.
|
||||
M << "\blue You are free of the net!"
|
||||
|
||||
@@ -682,7 +682,7 @@ As such, it's hard-coded for now. No reason for it not to be, really.
|
||||
verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjapulse
|
||||
verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjablade
|
||||
verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjastar
|
||||
verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjanet
|
||||
//verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjanet
|
||||
|
||||
//=======//KAMIKAZE VERBS//=======//
|
||||
|
||||
|
||||
@@ -73,7 +73,9 @@
|
||||
var/mob/M = new mobtype
|
||||
|
||||
if(ishuman(M) || isbrain(M))
|
||||
race = "Human"
|
||||
var/mob/living/carbon/human/H = M
|
||||
race = "[H.species.name]"
|
||||
|
||||
|
||||
else if(ismonkey(M))
|
||||
race = "Monkey"
|
||||
|
||||
@@ -97,41 +97,56 @@
|
||||
|
||||
|
||||
/obj/item/weapon/melee/baton/attack(mob/M, mob/user)
|
||||
if(status && (CLUMSY in user.mutations) && prob(50))
|
||||
user << "span class='danger'>You accidentally hit yourself with the [src]!</span>"
|
||||
user.Weaken(30)
|
||||
deductcharge(hitcost)
|
||||
return
|
||||
|
||||
|
||||
if(isrobot(M))
|
||||
..()
|
||||
return
|
||||
if(!isliving(M))
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
if(user.a_intent == "hurt")
|
||||
if(!..()) return
|
||||
H.visible_message("<span class='danger'>[M] has been beaten with the [src] by [user]!</span>")
|
||||
|
||||
user.attack_log += "\[[time_stamp()]\]<font color='red'> Beat [H.name] ([H.ckey]) with [src.name]</font>"
|
||||
H.attack_log += "\[[time_stamp()]\]<font color='orange'> Beaten by [user.name] ([user.ckey]) with [src.name]</font>"
|
||||
msg_admin_attack("[user.name] ([user.ckey]) beat [H.name] ([H.ckey]) with [src.name] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
|
||||
|
||||
playsound(src.loc, "swing_hit", 50, 1, -1)
|
||||
|
||||
else if(!status)
|
||||
H.visible_message("<span class='warning'>[H] has been prodded with [src] by [user]. Luckily it was off.</span>")
|
||||
return
|
||||
|
||||
var/mob/living/L = M
|
||||
|
||||
if(user.a_intent == "harm")
|
||||
..()
|
||||
|
||||
if(!status)
|
||||
L.visible_message("<span class='warning'>[L] has been prodded with [src] by [user]. Luckily it was off.</span>")
|
||||
return
|
||||
|
||||
var/stunroll = (rand(1,100))
|
||||
|
||||
if(ishuman(L) && status)
|
||||
user.lastattacked = L
|
||||
L.lastattacker = user
|
||||
if(user == L) // Attacking yourself can't miss
|
||||
|
||||
if(status)
|
||||
user.lastattacked = H
|
||||
H.lastattacker = user
|
||||
if(user == H) // Attacking yourself can't miss
|
||||
stunroll = 100
|
||||
if(stunroll < 40)
|
||||
L.visible_message("\red <B>[user] misses [L] with \the [src]!")
|
||||
msg_admin_attack("[key_name(user)] attempted to stun [key_name(L)] with the [src].")
|
||||
H.visible_message("\red <B>[user] misses [H] with \the [src]!")
|
||||
msg_admin_attack("[key_name(user)] attempted to stun [key_name(H)] with the [src].")
|
||||
return
|
||||
L.Stun(stunforce)
|
||||
L.Weaken(stunforce)
|
||||
L.apply_effect(STUTTER, stunforce)
|
||||
H.Stun(stunforce)
|
||||
H.Weaken(stunforce)
|
||||
H.apply_effect(STUTTER, stunforce)
|
||||
|
||||
L.visible_message("<span class='danger'>[L] has been stunned with [src] by [user]!</span>")
|
||||
H.visible_message("<span class='danger'>[H] has been stunned with [src] by [user]!</span>")
|
||||
playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1)
|
||||
|
||||
msg_admin_attack("[key_name(user)] stunned [key_name(L)] with the [src].")
|
||||
|
||||
msg_admin_attack("[key_name(user)] stunned [key_name(H)] with the [src].")
|
||||
|
||||
user.attack_log += "\[[time_stamp()]\]<font color='red'> Stunned [H.name] ([H.ckey]) with [src.name]</font>"
|
||||
H.attack_log += "\[[time_stamp()]\]<font color='orange'> Stunned by [user.name] ([user.ckey]) with [src.name]</font>"
|
||||
|
||||
if(isrobot(loc))
|
||||
var/mob/living/silicon/robot/R = loc
|
||||
if(R && R.cell)
|
||||
|
||||
@@ -1027,13 +1027,6 @@ datum/preferences
|
||||
if((!(lang.flags & RESTRICTED)) && (is_alien_whitelisted(user, L)||(!( lang.flags & WHITELISTED ))||(S && (L in S.secondary_langs))))
|
||||
new_languages += lang
|
||||
|
||||
//Apparently there's some PHP script that needs to be updated in order to give people whitelist languages.
|
||||
//This workaround should be removed once that has been properly updated
|
||||
if (lang.name == "Siik'maas")
|
||||
new_languages |= all_languages["Siik'tajr"]
|
||||
if (lang.name == "Siik'tajr")
|
||||
new_languages |= all_languages["Siik'maas"]
|
||||
|
||||
languages_available = 1
|
||||
|
||||
if(!(languages_available))
|
||||
@@ -1395,6 +1388,7 @@ datum/preferences
|
||||
|
||||
|
||||
character.skills = skills
|
||||
character.used_skillpoints = used_skillpoints
|
||||
|
||||
// Destroy/cyborgize organs
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
src << "As a ghost, you will now [(prefs.toggles & CHAT_GHOSTRADIO) ? "hear all radio chat in the world" : "only hear from nearby speakers"]."
|
||||
prefs.save_preferences()
|
||||
feedback_add_details("admin_verb","TGR")
|
||||
|
||||
|
||||
/client/proc/toggle_hear_radio()
|
||||
set name = "Show/Hide RadioChatter"
|
||||
set category = "Preferences"
|
||||
|
||||
@@ -21,25 +21,13 @@
|
||||
flags = WHITELISTED
|
||||
|
||||
/datum/language/tajaran
|
||||
name = "Siik'maas"
|
||||
name = "Siik'tajr"
|
||||
desc = "The traditionally employed tongue of Ahdomai, composed of expressive yowls and chirps. Native to the Tajaran."
|
||||
speech_verb = "mrowls"
|
||||
colour = "tajaran"
|
||||
key = "j"
|
||||
flags = WHITELISTED
|
||||
|
||||
/datum/language/tajaran_sign
|
||||
name = "Siik'tajr"
|
||||
desc = "An expressive language that combines yowls and chirps with posture, tail and ears. Spoken by many Tajaran."
|
||||
speech_verb = "mrowls"
|
||||
colour = "tajaran_signlang"
|
||||
key = "y" //only "dfpqxyz" left.
|
||||
|
||||
//need to find a way to resolve possesive macros
|
||||
signlang_verb = list("flicks their left ear", "flicks their right ear", "swivels their ears", "twitches their tail", "curls the end of their tail", "arches their tail", "wiggles the end of their tail", "waves their tail about", "holds up a claw", "gestures with their left hand", "gestures with their right hand", "gestures with their tail", "gestures with their ears")
|
||||
|
||||
flags = WHITELISTED | NONVERBAL
|
||||
|
||||
/datum/language/skrell
|
||||
name = "Skrellian"
|
||||
desc = "A melodic and complex language spoken by the Skrell of Qerrbalak. Some of the notes are inaudible to humans."
|
||||
|
||||
@@ -146,8 +146,7 @@
|
||||
name = "Tajaran"
|
||||
icobase = 'icons/mob/human_races/r_tajaran.dmi'
|
||||
deform = 'icons/mob/human_races/r_def_tajaran.dmi'
|
||||
language = "Siik'maas"
|
||||
secondary_langs = list("Siik'tajr")
|
||||
language = "Siik'tajr"
|
||||
tail = "tajtail"
|
||||
unarmed_type = /datum/unarmed_attack/claws
|
||||
darksight = 8
|
||||
|
||||
@@ -394,16 +394,16 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
|
||||
if(germ_level >= INFECTION_LEVEL_ONE)
|
||||
//having an infection raises your body temperature
|
||||
var/fever_temperature = (owner.species.heat_level_1 - owner.species.body_temperature - 1)* min(germ_level/(INFECTION_LEVEL_ONE+300), 1) + owner.species.body_temperature
|
||||
if (owner.bodytemperature < fever_temperature)
|
||||
//world << "fever: [owner.bodytemperature] < [fever_temperature], raising temperature."
|
||||
owner.bodytemperature++
|
||||
var/fever_temperature = (owner.species.heat_level_1 - owner.species.body_temperature - 1)* min(germ_level/INFECTION_LEVEL_TWO, 1) + owner.species.body_temperature
|
||||
if (fever_temperature > owner.bodytemperature)
|
||||
//need to make sure we raise temperature fast enough to get around environmental cooling preventing us from reaching fever_temperature
|
||||
owner.bodytemperature += (fever_temperature - T20C)/BODYTEMP_COLD_DIVISOR + 1
|
||||
|
||||
if(prob(round(germ_level/10)))
|
||||
if (antibiotics < 5)
|
||||
germ_level++
|
||||
|
||||
if (prob(5)) //adjust this to tweak how fast people take toxin damage from infections
|
||||
if (prob(10)) //adjust this to tweak how fast people take toxin damage from infections
|
||||
owner.adjustToxLoss(1)
|
||||
|
||||
if(germ_level >= INFECTION_LEVEL_TWO && antibiotics < 5)
|
||||
@@ -442,6 +442,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
if (!(status & ORGAN_DEAD))
|
||||
status |= ORGAN_DEAD
|
||||
owner << "<span class='notice'>You can't feel your [display_name] anymore...</span>"
|
||||
owner.update_body(1)
|
||||
|
||||
germ_level++
|
||||
owner.adjustToxLoss(1)
|
||||
|
||||
@@ -30,6 +30,11 @@
|
||||
projectile_type = "/obj/item/projectile/beam/stun"
|
||||
modifystate = "energystun"
|
||||
update_icon()
|
||||
if(user.l_hand == src)
|
||||
user.update_inv_l_hand()
|
||||
else
|
||||
user.update_inv_r_hand()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -250,42 +250,25 @@ client/var
|
||||
|
||||
//These are called by the on-screen buttons, adjusting what the victim can and cannot do.
|
||||
client/proc/add_gun_icons()
|
||||
if (!usr.item_use_icon)
|
||||
usr.item_use_icon = new /obj/screen/gun/item(null)
|
||||
usr.item_use_icon.icon_state = "no_item[target_can_click]"
|
||||
usr.item_use_icon.name = "[target_can_click ? "Disallow" : "Allow"] Item Use"
|
||||
|
||||
if (!usr.gun_move_icon)
|
||||
usr.gun_move_icon = new /obj/screen/gun/move(null)
|
||||
usr.gun_move_icon.icon_state = "no_walk[target_can_move]"
|
||||
usr.gun_move_icon.name = "[target_can_move ? "Disallow" : "Allow"] Walking"
|
||||
|
||||
if (target_can_move && !usr.gun_run_icon)
|
||||
usr.gun_run_icon = new /obj/screen/gun/run(null)
|
||||
usr.gun_run_icon.icon_state = "no_run[target_can_run]"
|
||||
usr.gun_run_icon.name = "[target_can_run ? "Disallow" : "Allow"] Running"
|
||||
|
||||
screen += usr.item_use_icon
|
||||
screen += usr.gun_move_icon
|
||||
if (target_can_move)
|
||||
screen += usr.gun_run_icon
|
||||
|
||||
|
||||
|
||||
client/proc/remove_gun_icons()
|
||||
if(!usr) return 1 // Runtime prevention on N00k agents spawning with SMG
|
||||
screen -= usr.item_use_icon
|
||||
screen -= usr.gun_move_icon
|
||||
if (target_can_move)
|
||||
screen -= usr.gun_run_icon
|
||||
del usr.gun_move_icon
|
||||
del usr.item_use_icon
|
||||
del usr.gun_run_icon
|
||||
|
||||
client/verb/ToggleGunMode()
|
||||
set hidden = 1
|
||||
gun_mode = !gun_mode
|
||||
if(gun_mode)
|
||||
usr << "You will now take people captive."
|
||||
add_gun_icons()
|
||||
else
|
||||
usr << "You will now shoot where you target."
|
||||
for(var/obj/item/weapon/gun/G in usr)
|
||||
@@ -302,7 +285,7 @@ client/verb/AllowTargetMove()
|
||||
target_can_move = !target_can_move
|
||||
if(target_can_move)
|
||||
usr << "Target may now walk."
|
||||
usr.gun_run_icon = new /obj/screen/gun/run(null) //adding icon for running permission
|
||||
//usr.gun_run_icon = new /obj/screen/gun/run(null) //adding icon for running permission
|
||||
screen += usr.gun_run_icon
|
||||
else
|
||||
usr << "Target may no longer move."
|
||||
|
||||
Reference in New Issue
Block a user